Thread (80 messages) 80 messages, 8 authors, 2011-07-11

Re: [PATCH 06/27] xfs: split xfs_setattr

From: Christoph Hellwig <hch@infradead.org>
Date: 2011-06-30 07:03:36

On Wed, Jun 29, 2011 at 05:13:16PM -0500, Alex Elder wrote:
Looks good but I think that you need to mask off the
ia_valid bits in the calls now made in xfs_vn_setattr().
Why? We call xfs_setattr_size if ATTR_SIZE is set.  The ATTR_SIZE
may also have a few other attributes we can handle, and assert on
those that it can't just to make sure.  Similarly xfs_setattr_nonsize
can handle everything but ATTR_SIZE, and again we have an assert to
protect against breeding incorrect XFS-internal callers.
Also, I think you may still need to check the file type
for the size-setting function.  Details below.
The VFS only ever does an ATTR_SIZE setattr on regular files.  We have
an assert to ensure that for debug builds, which is a lot more than
most other filesystems do.
quoted
+	ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET|
+			ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID|
+			ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0);
You'll have to mask these off in xfs_vn_setattr() if you're
going to make this assertion.
No, this is the (implicit) calling convention by the VFS.
quoted
-		if (S_ISDIR(ip->i_d.di_mode)) {
-			code = XFS_ERROR(EISDIR);
-			goto error_return;
-		} else if (!S_ISREG(ip->i_d.di_mode)) {
-			code = XFS_ERROR(EINVAL);
-			goto error_return;
-		}
This is the file type checking code I referred to above.
It simply was a leftover from IRIX that we can't hit on Linux.

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help