[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates for 4.5-rc1 from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus The two main changes are aio support in CephFS, and a series that fixes several issues in the authentication key timeout/renewal code. On top of that are a variety of cleanups and minor bug fixes. Thanks! sage Geliang Tang (2): libceph: use list_next_entry instead of list_entry_next libceph: use list_for_each_entry_safe Ilya Dryomov (6): libceph: fix ceph_msg_revoke() libceph: clear messenger auth_retry flag if we fault libceph: fix authorizer invalidation, take 2 libceph: invalidate AUTH in addition to a service ticket libceph: kill off ceph_x_ticket_handler::validity libceph: remove outdated comment Markus Elfring (1): rbd: delete an unnecessary check before rbd_dev_destroy() Minfei Huang (1): ceph: Avoid to propagate the invalid page point Yan, Zheng (4): ceph: fix double page_unlock() in page_mkwrite() ceph: Asynchronous IO support ceph: re-send AIO write request when getting -EOLDSNAP error ceph: use i_size_{read,write} to get/set i_size Yaowei Bai (2): ceph: remove unused functions in ceph_frag.h ceph: ceph_frag_contains_value can be boolean drivers/block/rbd.c| 3 +- fs/ceph/addr.c | 14 +- fs/ceph/cache.c| 8 +- fs/ceph/file.c | 509 ++--- fs/ceph/inode.c| 8 +- include/linux/ceph/ceph_frag.h | 37 +-- include/linux/ceph/messenger.h | 2 +- net/ceph/auth_x.c | 49 +++- net/ceph/auth_x.h | 2 +- net/ceph/messenger.c | 105 ++--- net/ceph/mon_client.c | 4 - 11 files changed, 501 insertions(+), 240 deletions(-)
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates for 4.5-rc1 from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus The two main changes are aio support in CephFS, and a series that fixes several issues in the authentication key timeout/renewal code. On top of that are a variety of cleanups and minor bug fixes. Thanks! sage Geliang Tang (2): libceph: use list_next_entry instead of list_entry_next libceph: use list_for_each_entry_safe Ilya Dryomov (6): libceph: fix ceph_msg_revoke() libceph: clear messenger auth_retry flag if we fault libceph: fix authorizer invalidation, take 2 libceph: invalidate AUTH in addition to a service ticket libceph: kill off ceph_x_ticket_handler::validity libceph: remove outdated comment Markus Elfring (1): rbd: delete an unnecessary check before rbd_dev_destroy() Minfei Huang (1): ceph: Avoid to propagate the invalid page point Yan, Zheng (4): ceph: fix double page_unlock() in page_mkwrite() ceph: Asynchronous IO support ceph: re-send AIO write request when getting -EOLDSNAP error ceph: use i_size_{read,write} to get/set i_size Yaowei Bai (2): ceph: remove unused functions in ceph_frag.h ceph: ceph_frag_contains_value can be boolean drivers/block/rbd.c| 3 +- fs/ceph/addr.c | 14 +- fs/ceph/cache.c| 8 +- fs/ceph/file.c | 509 ++--- fs/ceph/inode.c| 8 +- include/linux/ceph/ceph_frag.h | 37 +-- include/linux/ceph/messenger.h | 2 +- net/ceph/auth_x.c | 49 +++- net/ceph/auth_x.h | 2 +- net/ceph/messenger.c | 105 ++--- net/ceph/mon_client.c | 4 - 11 files changed, 501 insertions(+), 240 deletions(-)
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus We have a pile of bug fixes from Ilya, including a few patches that sync up the CRUSH code with the latest from userspace. There is also a long series from Zheng that fixes various issues with snapshots, inline data, and directory fsync, some simplification and improvement in the cap release code, and a rework of the caching of directory contents. To top it off there are a few small fixes and cleanups from Benoit and Hong. Thanks! sage Benoît Canet (2): libceph: Remove spurious kunmap() of the zero page libceph: Fix ceph_tcp_sendpage()'s more boolean usage Hong Zhiguo (1): libceph: fix wrong name "Ceph filesystem for Linux" Ilya Dryomov (14): libceph: use kvfree() instead of open-coding it libceph: nuke time_sub() libceph: store timeouts in jiffies, verify user input libceph: a couple tweaks for wait loops ceph: simplify two mount_timeout sites rbd: timeout watch teardown on unmap with mount_timeout crush: fix crash from invalid 'take' argument crush: sync up with userspace rbd: bump queue_max_segments rbd: terminate rbd_opts_tokens with Opt_err rbd: store rbd_options in rbd_device rbd: queue_depth map option crush: fix a bug in tree bucket decode rbd: use GFP_NOIO in rbd_obj_request_create() Yan, Zheng (23): libceph: properly release STAT request's raw_data_in libceph: allow setting osd_req_op's flags ceph: check OSD caps before read/write ceph: use empty snap context for uninline_data and get_pool_perm ceph: set i_head_snapc when getting CEPH_CAP_FILE_WR reference ceph: avoid sending unnessesary FLUSHSNAP message ceph: take snap_rwsem when accessing snap realm's cached_context ceph: don't trim auth cap when there are cap snaps ceph: make sure syncfs flushes all cap snaps ceph: don't pre-allocate space for cap release messages ceph: exclude setfilelock requests when calculating oldest tid ceph: ratelimit warn messages for MDS closes session ceph: don't include used caps in cap_wanted ceph: fix flushing caps ceph: fix directory fsync ceph: track pending caps flushing accurately ceph: track pending caps flushing globally ceph: send TID of the oldest pending caps flush to MDS ceph: re-send flushing caps (which are revoked) in reconnect stage ceph: pre-allocate data structure that tracks caps flushing ceph: switch some GFP_NOFS memory allocation to GFP_KERNEL ceph: rework dcache readdir ceph: fix ceph_writepages_start() drivers/block/rbd.c | 111 -- fs/ceph/acl.c | 4 +- fs/ceph/addr.c | 308 --- fs/ceph/caps.c | 836 +++- fs/ceph/dir.c | 383 -- fs/ceph/file.c | 61 ++- fs/ceph/inode.c | 155 ++-- fs/ceph/mds_client.c| 425 +++- fs/ceph/mds_client.h| 23 +- fs/ceph/snap.c | 173 + fs/ceph/super.c | 25 +- fs/ceph/super.h | 125 +++--- fs/ceph/xattr.c | 65 +++- include/linux/ceph/libceph.h| 21 +- include/linux/ceph/osd_client.h | 2 +- include/linux/crush/crush.h | 40 +- include/linux/crush/hash.h | 6 + include/linux/crush/mapper.h| 2 +- net/ceph/ceph_common.c | 50 ++- net/ceph/crush/crush.c | 13 +- net/ceph/crush/crush_ln_table.h | 32 +- net/ceph/crush/hash.c | 8 +- net/ceph/crush/mapper.c | 148 --- net/ceph/messenger.c| 3 +- net/ceph/mon_client.c | 13 +- net/ceph/osd_client.c | 42 +- net/ceph/osdmap.c | 2 +- net/ceph/pagevec.c | 5 +- 28 files changed, 2010 insertions(+), 1071 deletions(-)
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus We have a pile of bug fixes from Ilya, including a few patches that sync up the CRUSH code with the latest from userspace. There is also a long series from Zheng that fixes various issues with snapshots, inline data, and directory fsync, some simplification and improvement in the cap release code, and a rework of the caching of directory contents. To top it off there are a few small fixes and cleanups from Benoit and Hong. Thanks! sage Benoît Canet (2): libceph: Remove spurious kunmap() of the zero page libceph: Fix ceph_tcp_sendpage()'s more boolean usage Hong Zhiguo (1): libceph: fix wrong name Ceph filesystem for Linux Ilya Dryomov (14): libceph: use kvfree() instead of open-coding it libceph: nuke time_sub() libceph: store timeouts in jiffies, verify user input libceph: a couple tweaks for wait loops ceph: simplify two mount_timeout sites rbd: timeout watch teardown on unmap with mount_timeout crush: fix crash from invalid 'take' argument crush: sync up with userspace rbd: bump queue_max_segments rbd: terminate rbd_opts_tokens with Opt_err rbd: store rbd_options in rbd_device rbd: queue_depth map option crush: fix a bug in tree bucket decode rbd: use GFP_NOIO in rbd_obj_request_create() Yan, Zheng (23): libceph: properly release STAT request's raw_data_in libceph: allow setting osd_req_op's flags ceph: check OSD caps before read/write ceph: use empty snap context for uninline_data and get_pool_perm ceph: set i_head_snapc when getting CEPH_CAP_FILE_WR reference ceph: avoid sending unnessesary FLUSHSNAP message ceph: take snap_rwsem when accessing snap realm's cached_context ceph: don't trim auth cap when there are cap snaps ceph: make sure syncfs flushes all cap snaps ceph: don't pre-allocate space for cap release messages ceph: exclude setfilelock requests when calculating oldest tid ceph: ratelimit warn messages for MDS closes session ceph: don't include used caps in cap_wanted ceph: fix flushing caps ceph: fix directory fsync ceph: track pending caps flushing accurately ceph: track pending caps flushing globally ceph: send TID of the oldest pending caps flush to MDS ceph: re-send flushing caps (which are revoked) in reconnect stage ceph: pre-allocate data structure that tracks caps flushing ceph: switch some GFP_NOFS memory allocation to GFP_KERNEL ceph: rework dcache readdir ceph: fix ceph_writepages_start() drivers/block/rbd.c | 111 -- fs/ceph/acl.c | 4 +- fs/ceph/addr.c | 308 --- fs/ceph/caps.c | 836 +++- fs/ceph/dir.c | 383 -- fs/ceph/file.c | 61 ++- fs/ceph/inode.c | 155 ++-- fs/ceph/mds_client.c| 425 +++- fs/ceph/mds_client.h| 23 +- fs/ceph/snap.c | 173 + fs/ceph/super.c | 25 +- fs/ceph/super.h | 125 +++--- fs/ceph/xattr.c | 65 +++- include/linux/ceph/libceph.h| 21 +- include/linux/ceph/osd_client.h | 2 +- include/linux/crush/crush.h | 40 +- include/linux/crush/hash.h | 6 + include/linux/crush/mapper.h| 2 +- net/ceph/ceph_common.c | 50 ++- net/ceph/crush/crush.c | 13 +- net/ceph/crush/crush_ln_table.h | 32 +- net/ceph/crush/hash.c | 8 +- net/ceph/crush/mapper.c | 148 --- net/ceph/messenger.c| 3 +- net/ceph/mon_client.c | 13 +- net/ceph/osd_client.c | 42 +- net/ceph/osdmap.c | 2 +- net/ceph/pagevec.c | 5 +- 28 files changed, 2010 insertions(+), 1071 deletions(-)
Re: [GIT PULL] Ceph updates for -rc1
On Wed, Jan 29, 2014 at 06:30:00AM -0800, Sage Weil wrote: > The set_acl inode_operation wasn't getting set, and the prototype needed > to be adjusted a bit (it doesn't take a dentry anymore). All seems to be > well with the below patch. Btw, there's a few minor bits that should go on top of yours: - ->get_acl only gets called after we checked for a cached ACL, so no need to call get_cached_acl again. - no need to check IS_POSIXACL in ->get_acl, without that it should never get set as all the callers that set it already have the check. - you should be able to use the full posix_acl_create in CEPH Untested patch below: diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 66d377a..9ab312e 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -66,13 +66,6 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int type) char *value = NULL; struct posix_acl *acl; - if (!IS_POSIXACL(inode)) - return NULL; - - acl = ceph_get_cached_acl(inode, type); - if (acl != ACL_NOT_CACHED) - return acl; - switch (type) { case ACL_TYPE_ACCESS: name = POSIX_ACL_XATTR_ACCESS; @@ -190,41 +183,24 @@ out: int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) { - struct posix_acl *acl = NULL; - int ret = 0; - - if (!S_ISLNK(inode->i_mode)) { - if (IS_POSIXACL(dir)) { - acl = ceph_get_acl(dir, ACL_TYPE_DEFAULT); - if (IS_ERR(acl)) { - ret = PTR_ERR(acl); - goto out; - } - } + struct posix_acl *default_acl, *acl; + int error; - if (!acl) - inode->i_mode &= ~current_umask(); - } + error = posix_acl_create(dir, >i_mode, _acl, ); + if (error) + return error; - if (IS_POSIXACL(dir) && acl) { - if (S_ISDIR(inode->i_mode)) { - ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); - if (ret) - goto out_release; - } - ret = __posix_acl_create(, GFP_NOFS, >i_mode); - if (ret < 0) - goto out; - else if (ret > 0) - ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); - else - cache_no_acl(inode); - } else { + if (!default_acl && !acl) cache_no_acl(inode); - } -out_release: - posix_acl_release(acl); -out: - return ret; + if (default_acl) { + error = ceph_set_acl(inode, default_acl, ACL_TYPE_DEFAULT); + posix_acl_release(default_acl); + } + if (acl) { + if (!error) + error = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); + posix_acl_release(acl); + } + return error; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Ceph updates for -rc1
On Wed, Jan 29, 2014 at 06:30:00AM -0800, Sage Weil wrote: The set_acl inode_operation wasn't getting set, and the prototype needed to be adjusted a bit (it doesn't take a dentry anymore). All seems to be well with the below patch. Btw, there's a few minor bits that should go on top of yours: - -get_acl only gets called after we checked for a cached ACL, so no need to call get_cached_acl again. - no need to check IS_POSIXACL in -get_acl, without that it should never get set as all the callers that set it already have the check. - you should be able to use the full posix_acl_create in CEPH Untested patch below: diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 66d377a..9ab312e 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -66,13 +66,6 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int type) char *value = NULL; struct posix_acl *acl; - if (!IS_POSIXACL(inode)) - return NULL; - - acl = ceph_get_cached_acl(inode, type); - if (acl != ACL_NOT_CACHED) - return acl; - switch (type) { case ACL_TYPE_ACCESS: name = POSIX_ACL_XATTR_ACCESS; @@ -190,41 +183,24 @@ out: int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) { - struct posix_acl *acl = NULL; - int ret = 0; - - if (!S_ISLNK(inode-i_mode)) { - if (IS_POSIXACL(dir)) { - acl = ceph_get_acl(dir, ACL_TYPE_DEFAULT); - if (IS_ERR(acl)) { - ret = PTR_ERR(acl); - goto out; - } - } + struct posix_acl *default_acl, *acl; + int error; - if (!acl) - inode-i_mode = ~current_umask(); - } + error = posix_acl_create(dir, inode-i_mode, default_acl, acl); + if (error) + return error; - if (IS_POSIXACL(dir) acl) { - if (S_ISDIR(inode-i_mode)) { - ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); - if (ret) - goto out_release; - } - ret = __posix_acl_create(acl, GFP_NOFS, inode-i_mode); - if (ret 0) - goto out; - else if (ret 0) - ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); - else - cache_no_acl(inode); - } else { + if (!default_acl !acl) cache_no_acl(inode); - } -out_release: - posix_acl_release(acl); -out: - return ret; + if (default_acl) { + error = ceph_set_acl(inode, default_acl, ACL_TYPE_DEFAULT); + posix_acl_release(default_acl); + } + if (acl) { + if (!error) + error = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); + posix_acl_release(acl); + } + return error; } -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Ceph updates for -rc1
On Wed, Jan 29, 2014 at 4:30 PM, Sage Weil wrote: > On Tue, 28 Jan 2014, Sage Weil wrote: >> Hi Linus, >> >> On Tue, 28 Jan 2014, Linus Torvalds wrote: >> > On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones wrote: >> > > >> > > This breaks the build for me. >> > >> > It is my merge (Christoph's ACL changes came in today through the VFS >> > tree from Al). >> > >> > I was doing the merges today on my laptop (I had jury duty yesterday >> > and today), and so I didn't do the allmodconfig build I would normally >> > do on my (much faster) desktop. Well, actually I did do the full fs >> > builds for the earlier pulls that actually had some conflicts, but not >> > for the ceph pull. The conflict was hidden by the fact that the whole >> > cifs ACL support is new, so there was no data conflict, just a silent >> > semantic conflict between the new smarter ACL helpers and the new ACL >> > use in CIFS. >> >> s/cifs/ceph/ :) >> >> > I'm back home now (yay, all the afternoon cases got settled), and I >> > see the problem now. I should have done an allmodconfig build >> > immediately after coming home, but I never even thought of it. >> > >> > Anyway, here's an *untested* conversion to the new posix acl helper >> > infrastructure. I do wonder if ceph_init_acl() could be converted to >> > posix_acl_create(), right now that part is a "non-conversion" - it's >> > just made to use __posix_acl_create() that implements the old >> > interface. >> > >> > Al, Christoph, can you please check my conversion for sanity from a >> > generic posix-acl standpoint? >> > >> > Sage, Guangliang, Li, can you check the actual cifs usage/sanity of >> > the attached patch? >> >> Superficially at least the conversion looks okay to me, but it's not >> passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr >> when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan >> don't get there first. > > The set_acl inode_operation wasn't getting set, and the prototype needed > to be adjusted a bit (it doesn't take a dentry anymore). All seems to be > well with the below patch. > > Thanks! > sage > > > From 01baa54e113060eb9147548fe7beb572522a645a Mon Sep 17 00:00:00 2001 > From: Sage Weil > Date: Wed, 29 Jan 2014 06:22:25 -0800 > Subject: [PATCH] ceph: fix posix ACL hooks > > The merge of 7221fe4c2 raced with upstream changes in the generic POSIX > ACL code (2aeccbe95). Update Ceph to use the new helpers as well by > dropping the now-generic functions and setting the set_acl inode op. > > Signed-off-by: Sage Weil > --- > fs/ceph/acl.c | 112 > +++- > fs/ceph/dir.c | 1 + > fs/ceph/inode.c | 5 ++- > fs/ceph/super.h | 5 +-- > fs/ceph/xattr.c | 5 ++- > 5 files changed, 15 insertions(+), 113 deletions(-) > > diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c > index 64fddbc..66d377a 100644 > --- a/fs/ceph/acl.c > +++ b/fs/ceph/acl.c > @@ -107,14 +107,14 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int > type) > return acl; > } > > -static int ceph_set_acl(struct dentry *dentry, struct inode *inode, > - struct posix_acl *acl, int type) > +int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type) > { > int ret = 0, size = 0; > const char *name = NULL; > char *value = NULL; > struct iattr newattrs; > umode_t new_mode = inode->i_mode, old_mode = inode->i_mode; > + struct dentry *dentry = d_find_alias(inode); > > if (acl) { > ret = posix_acl_valid(acl); > @@ -208,16 +208,15 @@ int ceph_init_acl(struct dentry *dentry, struct inode > *inode, struct inode *dir) > > if (IS_POSIXACL(dir) && acl) { > if (S_ISDIR(inode->i_mode)) { > - ret = ceph_set_acl(dentry, inode, acl, > - ACL_TYPE_DEFAULT); > + ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); > if (ret) > goto out_release; > } > - ret = posix_acl_create(, GFP_NOFS, >i_mode); > + ret = __posix_acl_create(, GFP_NOFS, >i_mode); > if (ret < 0) > goto out; > else if (ret > 0) > - ret = ceph_set_acl(dentry, inode, acl, > ACL_TYPE_ACCESS); > + ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); > else > cache_no_acl(inode); > } else { > @@ -229,104 +228,3 @@ out_release: > out: > return ret; > } > - > -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) > -{ > - struct posix_acl *acl; > - int ret = 0; > - > - if (S_ISLNK(inode->i_mode)) { > - ret = -EOPNOTSUPP; > - goto out; > - } > - > - if (!IS_POSIXACL(inode)) > - goto out; > - > - acl =
Re: [GIT PULL] Ceph updates for -rc1
On Tue, 28 Jan 2014, Sage Weil wrote: > Hi Linus, > > On Tue, 28 Jan 2014, Linus Torvalds wrote: > > On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones wrote: > > > > > > This breaks the build for me. > > > > It is my merge (Christoph's ACL changes came in today through the VFS > > tree from Al). > > > > I was doing the merges today on my laptop (I had jury duty yesterday > > and today), and so I didn't do the allmodconfig build I would normally > > do on my (much faster) desktop. Well, actually I did do the full fs > > builds for the earlier pulls that actually had some conflicts, but not > > for the ceph pull. The conflict was hidden by the fact that the whole > > cifs ACL support is new, so there was no data conflict, just a silent > > semantic conflict between the new smarter ACL helpers and the new ACL > > use in CIFS. > > s/cifs/ceph/ :) > > > I'm back home now (yay, all the afternoon cases got settled), and I > > see the problem now. I should have done an allmodconfig build > > immediately after coming home, but I never even thought of it. > > > > Anyway, here's an *untested* conversion to the new posix acl helper > > infrastructure. I do wonder if ceph_init_acl() could be converted to > > posix_acl_create(), right now that part is a "non-conversion" - it's > > just made to use __posix_acl_create() that implements the old > > interface. > > > > Al, Christoph, can you please check my conversion for sanity from a > > generic posix-acl standpoint? > > > > Sage, Guangliang, Li, can you check the actual cifs usage/sanity of > > the attached patch? > > Superficially at least the conversion looks okay to me, but it's not > passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr > when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan > don't get there first. The set_acl inode_operation wasn't getting set, and the prototype needed to be adjusted a bit (it doesn't take a dentry anymore). All seems to be well with the below patch. Thanks! sage >From 01baa54e113060eb9147548fe7beb572522a645a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 29 Jan 2014 06:22:25 -0800 Subject: [PATCH] ceph: fix posix ACL hooks The merge of 7221fe4c2 raced with upstream changes in the generic POSIX ACL code (2aeccbe95). Update Ceph to use the new helpers as well by dropping the now-generic functions and setting the set_acl inode op. Signed-off-by: Sage Weil --- fs/ceph/acl.c | 112 +++- fs/ceph/dir.c | 1 + fs/ceph/inode.c | 5 ++- fs/ceph/super.h | 5 +-- fs/ceph/xattr.c | 5 ++- 5 files changed, 15 insertions(+), 113 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 64fddbc..66d377a 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -107,14 +107,14 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int type) return acl; } -static int ceph_set_acl(struct dentry *dentry, struct inode *inode, - struct posix_acl *acl, int type) +int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type) { int ret = 0, size = 0; const char *name = NULL; char *value = NULL; struct iattr newattrs; umode_t new_mode = inode->i_mode, old_mode = inode->i_mode; + struct dentry *dentry = d_find_alias(inode); if (acl) { ret = posix_acl_valid(acl); @@ -208,16 +208,15 @@ int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) if (IS_POSIXACL(dir) && acl) { if (S_ISDIR(inode->i_mode)) { - ret = ceph_set_acl(dentry, inode, acl, - ACL_TYPE_DEFAULT); + ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); if (ret) goto out_release; } - ret = posix_acl_create(, GFP_NOFS, >i_mode); + ret = __posix_acl_create(, GFP_NOFS, >i_mode); if (ret < 0) goto out; else if (ret > 0) - ret = ceph_set_acl(dentry, inode, acl, ACL_TYPE_ACCESS); + ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); else cache_no_acl(inode); } else { @@ -229,104 +228,3 @@ out_release: out: return ret; } - -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) -{ - struct posix_acl *acl; - int ret = 0; - - if (S_ISLNK(inode->i_mode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (!IS_POSIXACL(inode)) - goto out; - - acl = ceph_get_acl(inode, ACL_TYPE_ACCESS); - if (IS_ERR_OR_NULL(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - ret = posix_acl_chmod(, GFP_KERNEL, inode->i_mode); - if (ret) - goto out; -
Re: [GIT PULL] Ceph updates for -rc1
On Tue, 28 Jan 2014, Sage Weil wrote: Hi Linus, On Tue, 28 Jan 2014, Linus Torvalds wrote: On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones da...@redhat.com wrote: This breaks the build for me. It is my merge (Christoph's ACL changes came in today through the VFS tree from Al). I was doing the merges today on my laptop (I had jury duty yesterday and today), and so I didn't do the allmodconfig build I would normally do on my (much faster) desktop. Well, actually I did do the full fs builds for the earlier pulls that actually had some conflicts, but not for the ceph pull. The conflict was hidden by the fact that the whole cifs ACL support is new, so there was no data conflict, just a silent semantic conflict between the new smarter ACL helpers and the new ACL use in CIFS. s/cifs/ceph/ :) I'm back home now (yay, all the afternoon cases got settled), and I see the problem now. I should have done an allmodconfig build immediately after coming home, but I never even thought of it. Anyway, here's an *untested* conversion to the new posix acl helper infrastructure. I do wonder if ceph_init_acl() could be converted to posix_acl_create(), right now that part is a non-conversion - it's just made to use __posix_acl_create() that implements the old interface. Al, Christoph, can you please check my conversion for sanity from a generic posix-acl standpoint? Sage, Guangliang, Li, can you check the actual cifs usage/sanity of the attached patch? Superficially at least the conversion looks okay to me, but it's not passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan don't get there first. The set_acl inode_operation wasn't getting set, and the prototype needed to be adjusted a bit (it doesn't take a dentry anymore). All seems to be well with the below patch. Thanks! sage From 01baa54e113060eb9147548fe7beb572522a645a Mon Sep 17 00:00:00 2001 From: Sage Weil s...@inktank.com Date: Wed, 29 Jan 2014 06:22:25 -0800 Subject: [PATCH] ceph: fix posix ACL hooks The merge of 7221fe4c2 raced with upstream changes in the generic POSIX ACL code (2aeccbe95). Update Ceph to use the new helpers as well by dropping the now-generic functions and setting the set_acl inode op. Signed-off-by: Sage Weil s...@inktank.com --- fs/ceph/acl.c | 112 +++- fs/ceph/dir.c | 1 + fs/ceph/inode.c | 5 ++- fs/ceph/super.h | 5 +-- fs/ceph/xattr.c | 5 ++- 5 files changed, 15 insertions(+), 113 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 64fddbc..66d377a 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -107,14 +107,14 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int type) return acl; } -static int ceph_set_acl(struct dentry *dentry, struct inode *inode, - struct posix_acl *acl, int type) +int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type) { int ret = 0, size = 0; const char *name = NULL; char *value = NULL; struct iattr newattrs; umode_t new_mode = inode-i_mode, old_mode = inode-i_mode; + struct dentry *dentry = d_find_alias(inode); if (acl) { ret = posix_acl_valid(acl); @@ -208,16 +208,15 @@ int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) if (IS_POSIXACL(dir) acl) { if (S_ISDIR(inode-i_mode)) { - ret = ceph_set_acl(dentry, inode, acl, - ACL_TYPE_DEFAULT); + ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); if (ret) goto out_release; } - ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); + ret = __posix_acl_create(acl, GFP_NOFS, inode-i_mode); if (ret 0) goto out; else if (ret 0) - ret = ceph_set_acl(dentry, inode, acl, ACL_TYPE_ACCESS); + ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); else cache_no_acl(inode); } else { @@ -229,104 +228,3 @@ out_release: out: return ret; } - -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) -{ - struct posix_acl *acl; - int ret = 0; - - if (S_ISLNK(inode-i_mode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (!IS_POSIXACL(inode)) - goto out; - - acl = ceph_get_acl(inode, ACL_TYPE_ACCESS); - if (IS_ERR_OR_NULL(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - ret = posix_acl_chmod(acl, GFP_KERNEL, inode-i_mode); - if (ret) - goto out; - ret =
Re: [GIT PULL] Ceph updates for -rc1
On Wed, Jan 29, 2014 at 4:30 PM, Sage Weil s...@inktank.com wrote: On Tue, 28 Jan 2014, Sage Weil wrote: Hi Linus, On Tue, 28 Jan 2014, Linus Torvalds wrote: On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones da...@redhat.com wrote: This breaks the build for me. It is my merge (Christoph's ACL changes came in today through the VFS tree from Al). I was doing the merges today on my laptop (I had jury duty yesterday and today), and so I didn't do the allmodconfig build I would normally do on my (much faster) desktop. Well, actually I did do the full fs builds for the earlier pulls that actually had some conflicts, but not for the ceph pull. The conflict was hidden by the fact that the whole cifs ACL support is new, so there was no data conflict, just a silent semantic conflict between the new smarter ACL helpers and the new ACL use in CIFS. s/cifs/ceph/ :) I'm back home now (yay, all the afternoon cases got settled), and I see the problem now. I should have done an allmodconfig build immediately after coming home, but I never even thought of it. Anyway, here's an *untested* conversion to the new posix acl helper infrastructure. I do wonder if ceph_init_acl() could be converted to posix_acl_create(), right now that part is a non-conversion - it's just made to use __posix_acl_create() that implements the old interface. Al, Christoph, can you please check my conversion for sanity from a generic posix-acl standpoint? Sage, Guangliang, Li, can you check the actual cifs usage/sanity of the attached patch? Superficially at least the conversion looks okay to me, but it's not passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan don't get there first. The set_acl inode_operation wasn't getting set, and the prototype needed to be adjusted a bit (it doesn't take a dentry anymore). All seems to be well with the below patch. Thanks! sage From 01baa54e113060eb9147548fe7beb572522a645a Mon Sep 17 00:00:00 2001 From: Sage Weil s...@inktank.com Date: Wed, 29 Jan 2014 06:22:25 -0800 Subject: [PATCH] ceph: fix posix ACL hooks The merge of 7221fe4c2 raced with upstream changes in the generic POSIX ACL code (2aeccbe95). Update Ceph to use the new helpers as well by dropping the now-generic functions and setting the set_acl inode op. Signed-off-by: Sage Weil s...@inktank.com --- fs/ceph/acl.c | 112 +++- fs/ceph/dir.c | 1 + fs/ceph/inode.c | 5 ++- fs/ceph/super.h | 5 +-- fs/ceph/xattr.c | 5 ++- 5 files changed, 15 insertions(+), 113 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 64fddbc..66d377a 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -107,14 +107,14 @@ struct posix_acl *ceph_get_acl(struct inode *inode, int type) return acl; } -static int ceph_set_acl(struct dentry *dentry, struct inode *inode, - struct posix_acl *acl, int type) +int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type) { int ret = 0, size = 0; const char *name = NULL; char *value = NULL; struct iattr newattrs; umode_t new_mode = inode-i_mode, old_mode = inode-i_mode; + struct dentry *dentry = d_find_alias(inode); if (acl) { ret = posix_acl_valid(acl); @@ -208,16 +208,15 @@ int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) if (IS_POSIXACL(dir) acl) { if (S_ISDIR(inode-i_mode)) { - ret = ceph_set_acl(dentry, inode, acl, - ACL_TYPE_DEFAULT); + ret = ceph_set_acl(inode, acl, ACL_TYPE_DEFAULT); if (ret) goto out_release; } - ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); + ret = __posix_acl_create(acl, GFP_NOFS, inode-i_mode); if (ret 0) goto out; else if (ret 0) - ret = ceph_set_acl(dentry, inode, acl, ACL_TYPE_ACCESS); + ret = ceph_set_acl(inode, acl, ACL_TYPE_ACCESS); else cache_no_acl(inode); } else { @@ -229,104 +228,3 @@ out_release: out: return ret; } - -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) -{ - struct posix_acl *acl; - int ret = 0; - - if (S_ISLNK(inode-i_mode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (!IS_POSIXACL(inode)) - goto out; - - acl = ceph_get_acl(inode, ACL_TYPE_ACCESS); - if (IS_ERR_OR_NULL(acl)) { - ret = PTR_ERR(acl); - goto out; -
Re: [GIT PULL] Ceph updates for -rc1
Hi Linus, On Tue, 28 Jan 2014, Linus Torvalds wrote: > On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones wrote: > > > > This breaks the build for me. > > It is my merge (Christoph's ACL changes came in today through the VFS > tree from Al). > > I was doing the merges today on my laptop (I had jury duty yesterday > and today), and so I didn't do the allmodconfig build I would normally > do on my (much faster) desktop. Well, actually I did do the full fs > builds for the earlier pulls that actually had some conflicts, but not > for the ceph pull. The conflict was hidden by the fact that the whole > cifs ACL support is new, so there was no data conflict, just a silent > semantic conflict between the new smarter ACL helpers and the new ACL > use in CIFS. s/cifs/ceph/ :) > I'm back home now (yay, all the afternoon cases got settled), and I > see the problem now. I should have done an allmodconfig build > immediately after coming home, but I never even thought of it. > > Anyway, here's an *untested* conversion to the new posix acl helper > infrastructure. I do wonder if ceph_init_acl() could be converted to > posix_acl_create(), right now that part is a "non-conversion" - it's > just made to use __posix_acl_create() that implements the old > interface. > > Al, Christoph, can you please check my conversion for sanity from a > generic posix-acl standpoint? > > Sage, Guangliang, Li, can you check the actual cifs usage/sanity of > the attached patch? Superficially at least the conversion looks okay to me, but it's not passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan don't get there first. I should have caught this before--I knew the ACL changes were coming and forgot to check the merged build beforehand! sage -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Ceph updates for -rc1
On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones wrote: > > This breaks the build for me. It is my merge (Christoph's ACL changes came in today through the VFS tree from Al). I was doing the merges today on my laptop (I had jury duty yesterday and today), and so I didn't do the allmodconfig build I would normally do on my (much faster) desktop. Well, actually I did do the full fs builds for the earlier pulls that actually had some conflicts, but not for the ceph pull. The conflict was hidden by the fact that the whole cifs ACL support is new, so there was no data conflict, just a silent semantic conflict between the new smarter ACL helpers and the new ACL use in CIFS. I'm back home now (yay, all the afternoon cases got settled), and I see the problem now. I should have done an allmodconfig build immediately after coming home, but I never even thought of it. Anyway, here's an *untested* conversion to the new posix acl helper infrastructure. I do wonder if ceph_init_acl() could be converted to posix_acl_create(), right now that part is a "non-conversion" - it's just made to use __posix_acl_create() that implements the old interface. Al, Christoph, can you please check my conversion for sanity from a generic posix-acl standpoint? Sage, Guangliang, Li, can you check the actual cifs usage/sanity of the attached patch? Sorry about the messed-up merge. Although I also blame Al, because he's horrible about having his changes in linux-next, so nobody was ever really aware of this semantic conflict. Al. Bad, bad boy. Consider yourself hit with a rolled-up newspaper. Linus fs/ceph/acl.c | 103 +--- fs/ceph/inode.c | 3 +- fs/ceph/super.h | 3 -- fs/ceph/xattr.c | 5 +-- 4 files changed, 6 insertions(+), 108 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 64fddbc1d17b..f6911284c9bd 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -213,7 +213,7 @@ int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) if (ret) goto out_release; } - ret = posix_acl_create(, GFP_NOFS, >i_mode); + ret = __posix_acl_create(, GFP_NOFS, >i_mode); if (ret < 0) goto out; else if (ret > 0) @@ -229,104 +229,3 @@ out_release: out: return ret; } - -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) -{ - struct posix_acl *acl; - int ret = 0; - - if (S_ISLNK(inode->i_mode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (!IS_POSIXACL(inode)) - goto out; - - acl = ceph_get_acl(inode, ACL_TYPE_ACCESS); - if (IS_ERR_OR_NULL(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - ret = posix_acl_chmod(, GFP_KERNEL, inode->i_mode); - if (ret) - goto out; - ret = ceph_set_acl(dentry, inode, acl, ACL_TYPE_ACCESS); - posix_acl_release(acl); -out: - return ret; -} - -static int ceph_xattr_acl_get(struct dentry *dentry, const char *name, - void *value, size_t size, int type) -{ - struct posix_acl *acl; - int ret = 0; - - if (!IS_POSIXACL(dentry->d_inode)) - return -EOPNOTSUPP; - - acl = ceph_get_acl(dentry->d_inode, type); - if (IS_ERR(acl)) - return PTR_ERR(acl); - if (acl == NULL) - return -ENODATA; - - ret = posix_acl_to_xattr(_user_ns, acl, value, size); - posix_acl_release(acl); - - return ret; -} - -static int ceph_xattr_acl_set(struct dentry *dentry, const char *name, - const void *value, size_t size, int flags, int type) -{ - int ret = 0; - struct posix_acl *acl = NULL; - - if (!inode_owner_or_capable(dentry->d_inode)) { - ret = -EPERM; - goto out; - } - - if (!IS_POSIXACL(dentry->d_inode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (value) { - acl = posix_acl_from_xattr(_user_ns, value, size); - if (IS_ERR(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - if (acl) { - ret = posix_acl_valid(acl); - if (ret) - goto out_release; - } - } - - ret = ceph_set_acl(dentry, dentry->d_inode, acl, type); - -out_release: - posix_acl_release(acl); -out: - return ret; -} - -const struct xattr_handler ceph_xattr_acl_default_handler = { - .prefix = POSIX_ACL_XATTR_DEFAULT, - .flags = ACL_TYPE_DEFAULT, - .get= ceph_xattr_acl_get, - .set= ceph_xattr_acl_set, -}; - -const struct xattr_handler ceph_xattr_acl_access_handler = { -
Re: [GIT PULL] Ceph updates for -rc1
On Tue, Jan 28, 2014 at 10:40:16AM -0800, Sage Weil wrote: > Hi Linus, > > Please pull the following Ceph updates from > > git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git > for-linus > > This is a big batch. From Ilya we have: > > - rbd support for more than ~250 mapped devices (now uses same scheme >that SCSI does for device major/minor numbering) > - crush updates for new mapping behaviors (will be needed for coming >erasure coding support, among other things) > - preliminary support for tiered storage pools > > There is also a big series fixing a pile cephfs bugs with clustered MDSs > from Yan Zheng, ACL support for cephfs from Guangliang Zhao, ceph fscache > improvements from Li Wang, improved behavior when we get ENOSPC from Josh > Durgin, some readv/writev improvements from Majianpeng, and the usual mix > of small cleanups. This breaks the build for me. fs/ceph/acl.c: In function ‘ceph_init_acl’: fs/ceph/acl.c:216:3: warning: passing argument 1 of ‘posix_acl_create’ from incompatible pointer type [enabled by default] ret = posix_acl_create(, GFP_NOFS, >i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘struct inode *’ but argument is of type ‘struct posix_acl **’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: warning: passing argument 2 of ‘posix_acl_create’ makes pointer from integer without a cast [enabled by default] ret = posix_acl_create(, GFP_NOFS, >i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘umode_t *’ but argument is of type ‘unsigned int’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: warning: passing argument 3 of ‘posix_acl_create’ from incompatible pointer type [enabled by default] ret = posix_acl_create(, GFP_NOFS, >i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘struct posix_acl **’ but argument is of type ‘umode_t *’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: error: too few arguments to function ‘posix_acl_create’ ret = posix_acl_create(, GFP_NOFS, >i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: declared here extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c: In function ‘ceph_acl_chmod’: fs/ceph/acl.c:252:2: warning: passing argument 1 of ‘posix_acl_chmod’ from incompatible pointer type [enabled by default] ret = posix_acl_chmod(, GFP_KERNEL, inode->i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:95:12: note: expected ‘struct inode *’ but argument is of type ‘struct posix_acl **’ extern int posix_acl_chmod(struct inode *, umode_t); ^ fs/ceph/acl.c:252:2: error: too many arguments to function ‘posix_acl_chmod’ ret = posix_acl_chmod(, GFP_KERNEL, inode->i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:95:12: note: declared here extern int posix_acl_chmod(struct inode *, umode_t); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus This is a big batch. From Ilya we have: - rbd support for more than ~250 mapped devices (now uses same scheme that SCSI does for device major/minor numbering) - crush updates for new mapping behaviors (will be needed for coming erasure coding support, among other things) - preliminary support for tiered storage pools There is also a big series fixing a pile cephfs bugs with clustered MDSs from Yan Zheng, ACL support for cephfs from Guangliang Zhao, ceph fscache improvements from Li Wang, improved behavior when we get ENOSPC from Josh Durgin, some readv/writev improvements from Majianpeng, and the usual mix of small cleanups. Thanks! sage Alex Elder (1): MAINTAINERS: update an e-mail address Guangliang Zhao (1): ceph: add acl for cephfs Ilya Dryomov (51): rbd: rbd_device::dev_id is an int, format it as such rbd: tweak "loaded" message and module description rbd: refactor rbd_init() a bit rbd: switch to ida for rbd id assignments rbd: add 'minor' sysfs rbd device attribute rbd: wire up is_visible() sysfs callback for rbd bus rbd: add support for single-major device number allocation scheme rbd: enable extended devt in single-major mode rbd: introduce rbd_dev_header_unwatch_sync() and switch to it rbd: tear down watch request if rbd_dev_device_setup() fails libceph: all features fields must be u64 libceph: update ceph_features.h crush: pass weight vector size to map function crush: factor out (trivial) crush_destroy_rule() crush: reduce scope of some local variables crush: fix some comments crush: eliminate CRUSH_MAX_SET result size limitation crush: return CRUSH_ITEM_UNDEF for failed placements with indep crush: use breadth-first search for indep mode crush: add note about r in recursive choose crush: strip firstn conditionals out of crush_choose, rename crush: clarify numrep vs endpos crush: pass parent r value for indep call crush: new SET_CHOOSE_LEAF_TRIES command crush: apply chooseleaf_tries to firstn mode too crush: add SET_CHOOSE_TRIES rule step crush: CHOOSE_LEAF -> CHOOSELEAF throughout crush: generalize descend_once crush: add set_choose_local_[fallback_]tries steps crush: attempts -> tries crush: fix crush_choose_firstn comment crush: support new indep mode and SET_* steps (crush v2) by default libceph: use CEPH_MON_PORT when the specified port is 0 libceph: rename ceph_msg::front_max to front_alloc_len libceph: rename front to front_len in get_reply() libceph: fix preallocation check in get_reply() libceph: add ceph_kv{malloc,free}() and switch to them libceph: dout() is missing a newline libceph: start using oloc abstraction libceph: move ceph_file_layout helpers to ceph_fs.h libceph: rename MAX_OBJ_NAME_SIZE to CEPH_MAX_OID_NAME_LEN libceph: introduce and start using oid abstraction libceph: replace ceph_calc_ceph_pg() with ceph_oloc_oid_to_pg() libceph: CEPH_OSD_FLAG_* enum update libceph: add ceph_pg_pool_by_id() libceph: follow {read,write}_tier fields on osd request submission libceph: rename ceph_osd_request::r_{oloc,oid} to r_base_{oloc,oid} libceph: follow redirect replies from osds libceph: support CEPH_FEATURE_OSD_CACHEPOOL feature ceph: fix dout() compile warnings in ceph_filemap_fault() ceph: cast PAGE_SIZE to size_t in ceph_sync_write() J. Bruce Fields (1): ceph: trivial comment fix Josh Durgin (2): libceph: block I/O when PAUSE or FULL osd map flags are set libceph: resend all writes after the osdmap loses the full flag Li Wang (4): ceph: Clean up if error occurred in finish_read() ceph: Add necessary clean up if invalid reply received in handle_reply() ceph fscache: Introduce a routine for uncaching single no data page from fscache ceph fscache: Uncaching no data page from fscache in readpage() Libo Chen (1): fs: ceph: new helper: file_inode(file) Yan, Zheng (13): ceph: drop unconnected inodes ceph: check caps in filemap_fault and page_mkwrite ceph: handle cap export race in try_flush_caps() ceph: use ceph_seq_cmp() to compare migrate_seq ceph: fix cache revoke race ceph: fix trim caps ceph: handle -ESTALE reply ceph: check inode caps in ceph_d_revalidate ceph: handle session flush message ceph: remove exported caps when handling cap import message ceph: add open export target session helper ceph: add imported caps when handling cap export message libceph: support CEPH_FEATURE_EXPORT_PEER majianpeng (2): ceph:
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph updates from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus This is a big batch. From Ilya we have: - rbd support for more than ~250 mapped devices (now uses same scheme that SCSI does for device major/minor numbering) - crush updates for new mapping behaviors (will be needed for coming erasure coding support, among other things) - preliminary support for tiered storage pools There is also a big series fixing a pile cephfs bugs with clustered MDSs from Yan Zheng, ACL support for cephfs from Guangliang Zhao, ceph fscache improvements from Li Wang, improved behavior when we get ENOSPC from Josh Durgin, some readv/writev improvements from Majianpeng, and the usual mix of small cleanups. Thanks! sage Alex Elder (1): MAINTAINERS: update an e-mail address Guangliang Zhao (1): ceph: add acl for cephfs Ilya Dryomov (51): rbd: rbd_device::dev_id is an int, format it as such rbd: tweak loaded message and module description rbd: refactor rbd_init() a bit rbd: switch to ida for rbd id assignments rbd: add 'minor' sysfs rbd device attribute rbd: wire up is_visible() sysfs callback for rbd bus rbd: add support for single-major device number allocation scheme rbd: enable extended devt in single-major mode rbd: introduce rbd_dev_header_unwatch_sync() and switch to it rbd: tear down watch request if rbd_dev_device_setup() fails libceph: all features fields must be u64 libceph: update ceph_features.h crush: pass weight vector size to map function crush: factor out (trivial) crush_destroy_rule() crush: reduce scope of some local variables crush: fix some comments crush: eliminate CRUSH_MAX_SET result size limitation crush: return CRUSH_ITEM_UNDEF for failed placements with indep crush: use breadth-first search for indep mode crush: add note about r in recursive choose crush: strip firstn conditionals out of crush_choose, rename crush: clarify numrep vs endpos crush: pass parent r value for indep call crush: new SET_CHOOSE_LEAF_TRIES command crush: apply chooseleaf_tries to firstn mode too crush: add SET_CHOOSE_TRIES rule step crush: CHOOSE_LEAF - CHOOSELEAF throughout crush: generalize descend_once crush: add set_choose_local_[fallback_]tries steps crush: attempts - tries crush: fix crush_choose_firstn comment crush: support new indep mode and SET_* steps (crush v2) by default libceph: use CEPH_MON_PORT when the specified port is 0 libceph: rename ceph_msg::front_max to front_alloc_len libceph: rename front to front_len in get_reply() libceph: fix preallocation check in get_reply() libceph: add ceph_kv{malloc,free}() and switch to them libceph: dout() is missing a newline libceph: start using oloc abstraction libceph: move ceph_file_layout helpers to ceph_fs.h libceph: rename MAX_OBJ_NAME_SIZE to CEPH_MAX_OID_NAME_LEN libceph: introduce and start using oid abstraction libceph: replace ceph_calc_ceph_pg() with ceph_oloc_oid_to_pg() libceph: CEPH_OSD_FLAG_* enum update libceph: add ceph_pg_pool_by_id() libceph: follow {read,write}_tier fields on osd request submission libceph: rename ceph_osd_request::r_{oloc,oid} to r_base_{oloc,oid} libceph: follow redirect replies from osds libceph: support CEPH_FEATURE_OSD_CACHEPOOL feature ceph: fix dout() compile warnings in ceph_filemap_fault() ceph: cast PAGE_SIZE to size_t in ceph_sync_write() J. Bruce Fields (1): ceph: trivial comment fix Josh Durgin (2): libceph: block I/O when PAUSE or FULL osd map flags are set libceph: resend all writes after the osdmap loses the full flag Li Wang (4): ceph: Clean up if error occurred in finish_read() ceph: Add necessary clean up if invalid reply received in handle_reply() ceph fscache: Introduce a routine for uncaching single no data page from fscache ceph fscache: Uncaching no data page from fscache in readpage() Libo Chen (1): fs: ceph: new helper: file_inode(file) Yan, Zheng (13): ceph: drop unconnected inodes ceph: check caps in filemap_fault and page_mkwrite ceph: handle cap export race in try_flush_caps() ceph: use ceph_seq_cmp() to compare migrate_seq ceph: fix cache revoke race ceph: fix trim caps ceph: handle -ESTALE reply ceph: check inode caps in ceph_d_revalidate ceph: handle session flush message ceph: remove exported caps when handling cap import message ceph: add open export target session helper ceph: add imported caps when handling cap export message libceph: support CEPH_FEATURE_EXPORT_PEER majianpeng (2): ceph:
Re: [GIT PULL] Ceph updates for -rc1
On Tue, Jan 28, 2014 at 10:40:16AM -0800, Sage Weil wrote: Hi Linus, Please pull the following Ceph updates from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus This is a big batch. From Ilya we have: - rbd support for more than ~250 mapped devices (now uses same scheme that SCSI does for device major/minor numbering) - crush updates for new mapping behaviors (will be needed for coming erasure coding support, among other things) - preliminary support for tiered storage pools There is also a big series fixing a pile cephfs bugs with clustered MDSs from Yan Zheng, ACL support for cephfs from Guangliang Zhao, ceph fscache improvements from Li Wang, improved behavior when we get ENOSPC from Josh Durgin, some readv/writev improvements from Majianpeng, and the usual mix of small cleanups. This breaks the build for me. fs/ceph/acl.c: In function ‘ceph_init_acl’: fs/ceph/acl.c:216:3: warning: passing argument 1 of ‘posix_acl_create’ from incompatible pointer type [enabled by default] ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘struct inode *’ but argument is of type ‘struct posix_acl **’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: warning: passing argument 2 of ‘posix_acl_create’ makes pointer from integer without a cast [enabled by default] ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘umode_t *’ but argument is of type ‘unsigned int’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: warning: passing argument 3 of ‘posix_acl_create’ from incompatible pointer type [enabled by default] ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: expected ‘struct posix_acl **’ but argument is of type ‘umode_t *’ extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c:216:3: error: too few arguments to function ‘posix_acl_create’ ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:96:12: note: declared here extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, ^ fs/ceph/acl.c: In function ‘ceph_acl_chmod’: fs/ceph/acl.c:252:2: warning: passing argument 1 of ‘posix_acl_chmod’ from incompatible pointer type [enabled by default] ret = posix_acl_chmod(acl, GFP_KERNEL, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:95:12: note: expected ‘struct inode *’ but argument is of type ‘struct posix_acl **’ extern int posix_acl_chmod(struct inode *, umode_t); ^ fs/ceph/acl.c:252:2: error: too many arguments to function ‘posix_acl_chmod’ ret = posix_acl_chmod(acl, GFP_KERNEL, inode-i_mode); ^ In file included from include/linux/posix_acl_xattr.h:12:0, from fs/ceph/acl.c:25: include/linux/posix_acl.h:95:12: note: declared here extern int posix_acl_chmod(struct inode *, umode_t); -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Ceph updates for -rc1
On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones da...@redhat.com wrote: This breaks the build for me. It is my merge (Christoph's ACL changes came in today through the VFS tree from Al). I was doing the merges today on my laptop (I had jury duty yesterday and today), and so I didn't do the allmodconfig build I would normally do on my (much faster) desktop. Well, actually I did do the full fs builds for the earlier pulls that actually had some conflicts, but not for the ceph pull. The conflict was hidden by the fact that the whole cifs ACL support is new, so there was no data conflict, just a silent semantic conflict between the new smarter ACL helpers and the new ACL use in CIFS. I'm back home now (yay, all the afternoon cases got settled), and I see the problem now. I should have done an allmodconfig build immediately after coming home, but I never even thought of it. Anyway, here's an *untested* conversion to the new posix acl helper infrastructure. I do wonder if ceph_init_acl() could be converted to posix_acl_create(), right now that part is a non-conversion - it's just made to use __posix_acl_create() that implements the old interface. Al, Christoph, can you please check my conversion for sanity from a generic posix-acl standpoint? Sage, Guangliang, Li, can you check the actual cifs usage/sanity of the attached patch? Sorry about the messed-up merge. Although I also blame Al, because he's horrible about having his changes in linux-next, so nobody was ever really aware of this semantic conflict. Al. Bad, bad boy. Consider yourself hit with a rolled-up newspaper. Linus fs/ceph/acl.c | 103 +--- fs/ceph/inode.c | 3 +- fs/ceph/super.h | 3 -- fs/ceph/xattr.c | 5 +-- 4 files changed, 6 insertions(+), 108 deletions(-) diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c index 64fddbc1d17b..f6911284c9bd 100644 --- a/fs/ceph/acl.c +++ b/fs/ceph/acl.c @@ -213,7 +213,7 @@ int ceph_init_acl(struct dentry *dentry, struct inode *inode, struct inode *dir) if (ret) goto out_release; } - ret = posix_acl_create(acl, GFP_NOFS, inode-i_mode); + ret = __posix_acl_create(acl, GFP_NOFS, inode-i_mode); if (ret 0) goto out; else if (ret 0) @@ -229,104 +229,3 @@ out_release: out: return ret; } - -int ceph_acl_chmod(struct dentry *dentry, struct inode *inode) -{ - struct posix_acl *acl; - int ret = 0; - - if (S_ISLNK(inode-i_mode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (!IS_POSIXACL(inode)) - goto out; - - acl = ceph_get_acl(inode, ACL_TYPE_ACCESS); - if (IS_ERR_OR_NULL(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - ret = posix_acl_chmod(acl, GFP_KERNEL, inode-i_mode); - if (ret) - goto out; - ret = ceph_set_acl(dentry, inode, acl, ACL_TYPE_ACCESS); - posix_acl_release(acl); -out: - return ret; -} - -static int ceph_xattr_acl_get(struct dentry *dentry, const char *name, - void *value, size_t size, int type) -{ - struct posix_acl *acl; - int ret = 0; - - if (!IS_POSIXACL(dentry-d_inode)) - return -EOPNOTSUPP; - - acl = ceph_get_acl(dentry-d_inode, type); - if (IS_ERR(acl)) - return PTR_ERR(acl); - if (acl == NULL) - return -ENODATA; - - ret = posix_acl_to_xattr(init_user_ns, acl, value, size); - posix_acl_release(acl); - - return ret; -} - -static int ceph_xattr_acl_set(struct dentry *dentry, const char *name, - const void *value, size_t size, int flags, int type) -{ - int ret = 0; - struct posix_acl *acl = NULL; - - if (!inode_owner_or_capable(dentry-d_inode)) { - ret = -EPERM; - goto out; - } - - if (!IS_POSIXACL(dentry-d_inode)) { - ret = -EOPNOTSUPP; - goto out; - } - - if (value) { - acl = posix_acl_from_xattr(init_user_ns, value, size); - if (IS_ERR(acl)) { - ret = PTR_ERR(acl); - goto out; - } - - if (acl) { - ret = posix_acl_valid(acl); - if (ret) - goto out_release; - } - } - - ret = ceph_set_acl(dentry, dentry-d_inode, acl, type); - -out_release: - posix_acl_release(acl); -out: - return ret; -} - -const struct xattr_handler ceph_xattr_acl_default_handler = { - .prefix = POSIX_ACL_XATTR_DEFAULT, - .flags = ACL_TYPE_DEFAULT, - .get= ceph_xattr_acl_get, - .set= ceph_xattr_acl_set, -}; - -const struct xattr_handler
Re: [GIT PULL] Ceph updates for -rc1
Hi Linus, On Tue, 28 Jan 2014, Linus Torvalds wrote: On Tue, Jan 28, 2014 at 1:10 PM, Dave Jones da...@redhat.com wrote: This breaks the build for me. It is my merge (Christoph's ACL changes came in today through the VFS tree from Al). I was doing the merges today on my laptop (I had jury duty yesterday and today), and so I didn't do the allmodconfig build I would normally do on my (much faster) desktop. Well, actually I did do the full fs builds for the earlier pulls that actually had some conflicts, but not for the ceph pull. The conflict was hidden by the fact that the whole cifs ACL support is new, so there was no data conflict, just a silent semantic conflict between the new smarter ACL helpers and the new ACL use in CIFS. s/cifs/ceph/ :) I'm back home now (yay, all the afternoon cases got settled), and I see the problem now. I should have done an allmodconfig build immediately after coming home, but I never even thought of it. Anyway, here's an *untested* conversion to the new posix acl helper infrastructure. I do wonder if ceph_init_acl() could be converted to posix_acl_create(), right now that part is a non-conversion - it's just made to use __posix_acl_create() that implements the old interface. Al, Christoph, can you please check my conversion for sanity from a generic posix-acl standpoint? Sage, Guangliang, Li, can you check the actual cifs usage/sanity of the attached patch? Superficially at least the conversion looks okay to me, but it's not passing my smoke test (it's giving me EOPNOTSUPP for chmod and setxattr when setting an ACL). I'll look at it tomorrow if Guangliang, Li, or Yan don't get there first. I should have caught this before--I knew the ACL changes were coming and forgot to check the merged build beforehand! sage -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph changes from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus The bulk of this pull is a series from Alex that refactors and cleans up the RBD code to lay the groundwork for supporting the new image format and evolving feature set. There are also some cleanups in libceph, and for ceph there's fixed validation of file striping layouts and a bugfix in the code handling a shrinking MDS cluster. Thanks! sage Alex Elder (62): rbd: simplify __rbd_init_snaps_header() rbd: make snap_names_len a u64 rbd: ensure invalid pointers are made null rbd: use sizeof (object) instead of sizeof (type) rbd: rearrange rbd_header_from_disk() rbd: return earlier in rbd_header_from_disk() rbd: expand rbd_dev_ondisk_valid() checks rbd: separate reading header from decoding it ceph: let path portion of mount "device" be optional rbd: rename block_name -> object_prefix rbd: add new snapshots at the tail rbd: handle locking inside __rbd_client_find() rbd: don't over-allocate space for object prefix rbd: kill incore snap_names_len rbd: more cleanup in rbd_header_from_disk() rbd: move rbd_opts to struct rbd_device rbd: add read_only rbd map option rbd: kill notify_timeout option rbd: bio_chain_clone() cleanups rbd: drop needless test in rbd_rq_fn() rbd: check for overflow in rbd_get_num_segments() rbd: split up rbd_get_segment() rbd: define rbd_assert() rbd: rename rbd_id_get() rbd: rename __rbd_init_snaps_header() rbd: kill rbd_dev->q rbd: kill rbd_image_header->total_snaps rbd: separate mapping info in rbd_dev rbd: record mapped size rbd: return snap name from rbd_add_parse_args() rbd: set mapping name with the rest rbd: simplify snap_by_name() interface rbd: do some header initialization earlier rbd: simplify rbd_init_disk() a bit rbd: move locking out of rbd_header_set_snap() rbd: don't register snapshots in bus_add_dev() rbd: use snaps list in rbd_snap_by_name() rbd: assign header name later rbd: defer registering snapshot devices rbd: call set_snap() before snap_devs_update() rbd: read the header before registering device rbd: defer setting device id rbd: call rbd_init_disk() sooner rbd: drop dev registration check for new snap rbd: set initial capacity in rbd_init_disk() rbd: set up watch before announcing disk rbd: pass flags to rbd_req_sync_exec() rbd: support data returned from OSD methods rbd: define some new format constants rbd: define rbd_dev_image_id() rbd: kill create_snap sysfs entry rbd: don't use index in __rbd_add_snap_dev() rbd: add an rbd features field rbd: encapsulate code that gets snapshot info rbd: lay out header probe infrastructure rbd: add code to get the size of a v2 rbd image rbd: get the object prefix for a v2 rbd image rbd: get image features for a v2 image rbd: get the snapshot context for a v2 image rbd: get snapshot name for a v2 image rbd: update remaining header fields for v2 ceph: avoid 32-bit page index overflow Iulius Curt (1): libceph: Fix sparse warning Sage Weil (5): libceph: remove unused monc->have_fsid libceph: check for invalid mapping ceph: propagate layout error on osd request creation rbd: BUG on invalid layout ceph: return EIO on invalid layout on GET_DATALOC ioctl Wei Yongjun (2): ceph: use list_move_tail instead of list_del/list_add_tail ceph: convert to use le32_add_cpu() Yan, Zheng (1): ceph: Fix oops when handling mdsmap that decreases max_mds Documentation/ABI/testing/sysfs-bus-rbd | 18 +- drivers/block/rbd.c | 1790 --- drivers/block/rbd_types.h | 27 +- fs/ceph/addr.c | 19 +- fs/ceph/caps.c |2 +- fs/ceph/file.c |4 +- fs/ceph/ioctl.c |8 +- fs/ceph/mds_client.c|3 +- fs/ceph/super.c | 37 +- include/linux/ceph/mon_client.h |1 - include/linux/ceph/osd_client.h |2 +- include/linux/ceph/osdmap.h |6 +- net/ceph/mon_client.c |7 +- net/ceph/osd_client.c | 47 +- net/ceph/osdmap.c | 18 +- net/ceph/pagelist.c |5 +- 16 files changed, 1302 insertions(+), 692 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at
[GIT PULL] Ceph updates for -rc1
Hi Linus, Please pull the following Ceph changes from git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git for-linus The bulk of this pull is a series from Alex that refactors and cleans up the RBD code to lay the groundwork for supporting the new image format and evolving feature set. There are also some cleanups in libceph, and for ceph there's fixed validation of file striping layouts and a bugfix in the code handling a shrinking MDS cluster. Thanks! sage Alex Elder (62): rbd: simplify __rbd_init_snaps_header() rbd: make snap_names_len a u64 rbd: ensure invalid pointers are made null rbd: use sizeof (object) instead of sizeof (type) rbd: rearrange rbd_header_from_disk() rbd: return earlier in rbd_header_from_disk() rbd: expand rbd_dev_ondisk_valid() checks rbd: separate reading header from decoding it ceph: let path portion of mount device be optional rbd: rename block_name - object_prefix rbd: add new snapshots at the tail rbd: handle locking inside __rbd_client_find() rbd: don't over-allocate space for object prefix rbd: kill incore snap_names_len rbd: more cleanup in rbd_header_from_disk() rbd: move rbd_opts to struct rbd_device rbd: add read_only rbd map option rbd: kill notify_timeout option rbd: bio_chain_clone() cleanups rbd: drop needless test in rbd_rq_fn() rbd: check for overflow in rbd_get_num_segments() rbd: split up rbd_get_segment() rbd: define rbd_assert() rbd: rename rbd_id_get() rbd: rename __rbd_init_snaps_header() rbd: kill rbd_dev-q rbd: kill rbd_image_header-total_snaps rbd: separate mapping info in rbd_dev rbd: record mapped size rbd: return snap name from rbd_add_parse_args() rbd: set mapping name with the rest rbd: simplify snap_by_name() interface rbd: do some header initialization earlier rbd: simplify rbd_init_disk() a bit rbd: move locking out of rbd_header_set_snap() rbd: don't register snapshots in bus_add_dev() rbd: use snaps list in rbd_snap_by_name() rbd: assign header name later rbd: defer registering snapshot devices rbd: call set_snap() before snap_devs_update() rbd: read the header before registering device rbd: defer setting device id rbd: call rbd_init_disk() sooner rbd: drop dev registration check for new snap rbd: set initial capacity in rbd_init_disk() rbd: set up watch before announcing disk rbd: pass flags to rbd_req_sync_exec() rbd: support data returned from OSD methods rbd: define some new format constants rbd: define rbd_dev_image_id() rbd: kill create_snap sysfs entry rbd: don't use index in __rbd_add_snap_dev() rbd: add an rbd features field rbd: encapsulate code that gets snapshot info rbd: lay out header probe infrastructure rbd: add code to get the size of a v2 rbd image rbd: get the object prefix for a v2 rbd image rbd: get image features for a v2 image rbd: get the snapshot context for a v2 image rbd: get snapshot name for a v2 image rbd: update remaining header fields for v2 ceph: avoid 32-bit page index overflow Iulius Curt (1): libceph: Fix sparse warning Sage Weil (5): libceph: remove unused monc-have_fsid libceph: check for invalid mapping ceph: propagate layout error on osd request creation rbd: BUG on invalid layout ceph: return EIO on invalid layout on GET_DATALOC ioctl Wei Yongjun (2): ceph: use list_move_tail instead of list_del/list_add_tail ceph: convert to use le32_add_cpu() Yan, Zheng (1): ceph: Fix oops when handling mdsmap that decreases max_mds Documentation/ABI/testing/sysfs-bus-rbd | 18 +- drivers/block/rbd.c | 1790 --- drivers/block/rbd_types.h | 27 +- fs/ceph/addr.c | 19 +- fs/ceph/caps.c |2 +- fs/ceph/file.c |4 +- fs/ceph/ioctl.c |8 +- fs/ceph/mds_client.c|3 +- fs/ceph/super.c | 37 +- include/linux/ceph/mon_client.h |1 - include/linux/ceph/osd_client.h |2 +- include/linux/ceph/osdmap.h |6 +- net/ceph/mon_client.c |7 +- net/ceph/osd_client.c | 47 +- net/ceph/osdmap.c | 18 +- net/ceph/pagelist.c |5 +- 16 files changed, 1302 insertions(+), 692 deletions(-) -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html