svn commit: samba r3801 - in branches/SAMBA_4_0/source/ntvfs/posix:
.
tridge at samba.org
tridge at samba.org
Wed Nov 17 07:17:56 GMT 2004
Author: tridge
Date: 2004-11-17 07:17:55 +0000 (Wed, 17 Nov 2004)
New Revision: 3801
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3801
Log:
added allocation size rounding. This is needed for ifstest.
Modified:
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_setfileinfo.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_streams.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c
Changeset:
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c 2004-11-17 06:44:50 UTC (rev 3800)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c 2004-11-17 07:17:55 UTC (rev 3801)
@@ -93,7 +93,7 @@
name->dos.change_time += name->st.st_ctim.tv_nsec / 100;
#endif
name->dos.attrib = dos_mode_from_stat(pvfs, &name->st);
- name->dos.alloc_size = name->st.st_size;
+ name->dos.alloc_size = pvfs_round_alloc_size(pvfs, name->st.st_size);
name->dos.nlink = name->st.st_nlink;
name->dos.ea_size = 0;
name->dos.file_id = (((uint64_t)name->st.st_dev)<<32) | name->st.st_ino;
@@ -113,7 +113,8 @@
mode |= S_IXUSR | S_IXGRP | S_IXOTH;
}
- if (!(attrib & FILE_ATTRIBUTE_READONLY)) {
+ if (!(attrib & FILE_ATTRIBUTE_READONLY) ||
+ (pvfs->flags & PVFS_FLAG_XATTR_ENABLE)) {
mode |= S_IWUSR;
}
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_setfileinfo.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_setfileinfo.c 2004-11-17 06:44:50 UTC (rev 3800)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_setfileinfo.c 2004-11-17 07:17:55 UTC (rev 3801)
@@ -273,6 +273,8 @@
if (newstats.dos.alloc_size < newstats.st.st_size) {
newstats.st.st_size = newstats.dos.alloc_size;
}
+ newstats.dos.alloc_size = pvfs_round_alloc_size(pvfs,
+ newstats.dos.alloc_size);
break;
case RAW_SFILEINFO_END_OF_FILE_INFO:
@@ -443,6 +445,8 @@
if (newstats.dos.alloc_size < newstats.st.st_size) {
newstats.st.st_size = newstats.dos.alloc_size;
}
+ newstats.dos.alloc_size = pvfs_round_alloc_size(pvfs,
+ newstats.dos.alloc_size);
break;
case RAW_SFILEINFO_END_OF_FILE_INFO:
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_streams.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_streams.c 2004-11-17 06:44:50 UTC (rev 3800)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_streams.c 2004-11-17 07:17:55 UTC (rev 3801)
@@ -99,7 +99,7 @@
for (i=0;i<streams->num_streams;i++) {
struct xattr_DosStream *s = &streams->streams[i];
if (StrCaseCmp(s->name, name->stream_name) == 0) {
- name->dos.alloc_size = s->alloc_size;
+ name->dos.alloc_size = pvfs_round_alloc_size(pvfs, s->alloc_size);
name->st.st_size = s->size;
name->stream_exists = True;
talloc_free(streams);
@@ -141,7 +141,7 @@
struct xattr_DosStream *s = &streams->streams[i];
if (StrCaseCmp(s->name, name->stream_name) == 0) {
s->size = size;
- s->alloc_size = size;
+ s->alloc_size = pvfs_round_alloc_size(pvfs, size);
break;
}
}
@@ -160,7 +160,7 @@
s->flags = XATTR_STREAM_FLAG_INTERNAL;
s->size = size;
- s->alloc_size = size;
+ s->alloc_size = pvfs_round_alloc_size(pvfs, size);
s->name = name->stream_name;
}
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c 2004-11-17 06:44:50 UTC (rev 3800)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c 2004-11-17 07:17:55 UTC (rev 3801)
@@ -187,3 +187,14 @@
return value;
}
+
+
+/*
+ file allocation size rounding. This is required to pass ifstest
+*/
+uint64_t pvfs_round_alloc_size(struct pvfs_state *pvfs, uint64_t size)
+{
+ const uint64_t round_value = 511;
+ if (size == 0) return 0;
+ return (size + round_value) & ~round_value;
+}
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c 2004-11-17 06:44:50 UTC (rev 3800)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c 2004-11-17 07:17:55 UTC (rev 3801)
@@ -224,7 +224,8 @@
name->dos.attrib = pvfs_attrib_normalise(info1->attrib);
name->dos.ea_size = info1->ea_size;
if (name->st.st_size == info1->size) {
- name->dos.alloc_size = info1->alloc_size;
+ name->dos.alloc_size =
+ pvfs_round_alloc_size(pvfs, info1->alloc_size);
}
if (info1->create_time != 0) {
name->dos.create_time = info1->create_time;
More information about the samba-cvs
mailing list