- exit early from mds_open if we get a lookup error (1749)
- partial page read at EOF wouldn't wait for disk before sending (1642)
- avoid NULL deref in obdfilter when reading page past EOF (1592)
+ - bug 56: POSIX utime.4 -EPERM on FIFO not owned by user
2003-06-15 Phil Schwan <phil@clusterfs.com>
* version v0_7
/* Don't allow setattr to change file type */
iattr->ia_mode = (inode->i_mode & S_IFMT)|(iattr->ia_mode & ~S_IFMT);
+ /* We set these flags on the client, but have already checked perms
+ * so don't confuse inode_change_ok. */
+ iattr->ia_valid &= ~(ATTR_MTIME_SET | ATTR_ATIME_SET);
+
if (inode->i_op->setattr) {
rc = inode->i_op->setattr(dentry, iattr);
} else {
/* Don't allow setattr to change file type */
iattr->ia_mode = (inode->i_mode & S_IFMT)|(iattr->ia_mode & ~S_IFMT);
+ /* We set these flags on the client, but have already checked perms
+ * so don't confuse inode_change_ok. */
+ iattr->ia_valid &= ~(ATTR_MTIME_SET | ATTR_ATIME_SET);
+
if (inode->i_op->setattr) {
rc = inode->i_op->setattr(dentry, iattr);
} else {
iattr->ia_mode = inode->i_mode;
}
}
- if (inode->i_op->setattr)
+
+ /* We set these flags on the client, but have already checked perms
+ * so don't confuse inode_change_ok. */
+ iattr->ia_valid &= ~(ATTR_MTIME_SET | ATTR_ATIME_SET);
+
+ if (inode->i_op->setattr) {
rc = inode->i_op->setattr(dentry, iattr);
- else
- rc = inode_setattr(inode, iattr);
+ } else {
+ rc = inode_change_ok(inode, iattr);
+ if (!rc)
+ rc = inode_setattr(inode, iattr);
+ }
unlock_kernel();