mds: handle xattrs on inode creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[adding ceph-devel CC]

On Fri, 21 Oct 2011, Noah Watkins wrote:
> Hi Sage,
> 
> This commit works fine, but I stumbled upon an additional complication 
> when building up the rest of the ACL code.
> 
> The ACL initialization semantics can alter the i_mode entry of the new 
> inode. However, since i_mode is filled in from the MDS request reply it 
> seems as though there is a potential conflict in semantics between what 
> the MDS computes, and what the ACL code may want to compute (I suppose 
> strict POSIX).
> 
> The r_fmode field of ceph_mds_request seems to be informing the MDS of 
> modes, but at least for ceph_mkdir, doesn't appear to be used at all. 
> Should the r_fmode be fully computed by the clients?

The r_fmode is actually a client-side thing use for initializing the 
struct file.  (It's also not a unix permissions mode, but from the 
CEPH_FILE_MODE_* namespace.)

The mode for the newly created object is being passed to the mds for each 
request as part of the args struct/union.  And it looks like it's being 
used on the MDS for everything except symlink (which always gets 0777 + 
the type bits).  For example, for mkdir, it's

  unsigned mode = req->head.args.mkdir.mode;
  mode &= ~S_IFMT;
  mode |= S_IFDIR;

and on the client there is

	req->r_args.mkdir.mode = cpu_to_le32(mode);

in ceph_mkdir() in dir.c.

sage


> 
> -Noah
> 
> ----- Original Message -----
> From: "Sage Weil" <sage@xxxxxxxxxxxx>
> To: jayhawk@xxxxxxxxxxxx
> Sent: Tuesday, October 18, 2011 1:50:08 PM
> Subject: [ceph-commit] [NewDreamNetwork/ceph] d2d214: mds: handle xattrs on inode creation (fwd)
> 
> Just need to attach the new xattr(s) in the msg payload.  This will be 
> similar to what setxattr does with r_pages and r_num_pages, except the 
> page content will be
> 
> <u32> number of xattrs
> (
> 	<u32> xattr name length
> 	xattr name
> 	<u32> xattr value length
> 	xattr value
> ) * N
> 
> 
> ---------- Forwarded message ----------
> Date: Tue, 18 Oct 2011 13:39:13 -0700
> From: noreply@xxxxxxxxxx
> To: ceph-commit@xxxxxxxxxxxxxxxxx
> Subject: [ceph-commit] [NewDreamNetwork/ceph] d2d214: mds: handle xattrs on
>     inode creation
> 
>   Branch: refs/heads/wip-create-xattr
>   Home:   https://github.com/NewDreamNetwork/ceph
> 
>   Commit: d2d2149d364ee5b5fe078a964e2c1089c2153cd1
>       https://github.com/NewDreamNetwork/ceph/commit/d2d2149d364ee5b5fe078a964e2c1089c2153cd1
>   Author: Sage Weil <sage@xxxxxxxxxxxx>
>   Date:   2011-10-18 (Tue, 18 Oct 2011)
> 
>   Changed paths:
>     M src/mds/Server.cc
> 
>   Log Message:
>   -----------
>   mds: handle xattrs on inode creation
> 
> Allow mknod, mkdir, symlink, create to provide xattrs for the new
> inode.  This will be used by the kclient to set ACLs on new inodes
> based on the parent directory.
> 
> Signed-off-by: Sage Weil <sage@xxxxxxxxxxxx>
> 
> 
> _______________________________________________
> Ceph-commit mailing list
> Ceph-commit@xxxxxxxxxxxxxxxxxxxxxxx
> http://lists.ceph.newdream.net/listinfo.cgi/ceph-commit-ceph.newdream.net
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux