[GIT PULL] Ceph updates for -rc1

2016-01-24 Thread Sage Weil
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

2016-01-24 Thread Sage Weil
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

2015-07-02 Thread Sage Weil
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

2015-07-02 Thread Sage Weil
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

2014-01-30 Thread Christoph Hellwig
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

2014-01-30 Thread Christoph Hellwig
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

2014-01-29 Thread Ilya Dryomov
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

2014-01-29 Thread Sage Weil
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

2014-01-29 Thread Sage Weil
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

2014-01-29 Thread Ilya Dryomov
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

2014-01-28 Thread Sage Weil
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

2014-01-28 Thread Linus Torvalds
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

2014-01-28 Thread Dave Jones
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

2014-01-28 Thread Sage Weil
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

2014-01-28 Thread Sage Weil
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

2014-01-28 Thread Dave Jones
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

2014-01-28 Thread Linus Torvalds
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

2014-01-28 Thread Sage Weil
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

2012-10-06 Thread Sage Weil
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

2012-10-06 Thread Sage Weil
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