looks good, applied to the testing branch. thanks! sage On Wed, 26 Jun 2013, majianpeng wrote: > Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx> > --- > fs/ceph/caps.c | 21 +++++++-------------- > fs/ceph/super.h | 2 +- > 2 files changed, 8 insertions(+), 15 deletions(-) > > diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c > index da0f9b8..6d2655c 100644 > --- a/fs/ceph/caps.c > +++ b/fs/ceph/caps.c > @@ -147,7 +147,7 @@ void ceph_adjust_min_caps(struct ceph_mds_client *mdsc, int delta) > spin_unlock(&mdsc->caps_list_lock); > } > > -int ceph_reserve_caps(struct ceph_mds_client *mdsc, > +void ceph_reserve_caps(struct ceph_mds_client *mdsc, > struct ceph_cap_reservation *ctx, int need) > { > int i; > @@ -155,7 +155,6 @@ int ceph_reserve_caps(struct ceph_mds_client *mdsc, > int have; > int alloc = 0; > LIST_HEAD(newcaps); > - int ret = 0; > > dout("reserve caps ctx=%p need=%d\n", ctx, need); > > @@ -174,14 +173,15 @@ int ceph_reserve_caps(struct ceph_mds_client *mdsc, > > for (i = have; i < need; i++) { > cap = kmem_cache_alloc(ceph_cap_cachep, GFP_NOFS); > - if (!cap) { > - ret = -ENOMEM; > - goto out_alloc_count; > - } > + if (!cap) > + break; > list_add(&cap->caps_item, &newcaps); > alloc++; > } > - BUG_ON(have + alloc != need); > + /* we didn't manage to reserve as much as we needed */ > + if (have + alloc != need) > + pr_warn("reserve caps ctx=%p ENOMEM need=%d got=%d\n", > + ctx, need, have + alloc); > > spin_lock(&mdsc->caps_list_lock); > mdsc->caps_total_count += alloc; > @@ -197,13 +197,6 @@ int ceph_reserve_caps(struct ceph_mds_client *mdsc, > dout("reserve caps ctx=%p %d = %d used + %d resv + %d avail\n", > ctx, mdsc->caps_total_count, mdsc->caps_use_count, > mdsc->caps_reserve_count, mdsc->caps_avail_count); > - return 0; > - > -out_alloc_count: > - /* we didn't manage to reserve as much as we needed */ > - pr_warning("reserve caps ctx=%p ENOMEM need=%d got=%d\n", > - ctx, need, have); > - return ret; > } > > int ceph_unreserve_caps(struct ceph_mds_client *mdsc, > diff --git a/fs/ceph/super.h b/fs/ceph/super.h > index 7ccfdb4..dfbb729 100644 > --- a/fs/ceph/super.h > +++ b/fs/ceph/super.h > @@ -534,7 +534,7 @@ extern int __ceph_caps_mds_wanted(struct ceph_inode_info *ci); > extern void ceph_caps_init(struct ceph_mds_client *mdsc); > extern void ceph_caps_finalize(struct ceph_mds_client *mdsc); > extern void ceph_adjust_min_caps(struct ceph_mds_client *mdsc, int delta); > -extern int ceph_reserve_caps(struct ceph_mds_client *mdsc, > +extern void ceph_reserve_caps(struct ceph_mds_client *mdsc, > struct ceph_cap_reservation *ctx, int need); > extern int ceph_unreserve_caps(struct ceph_mds_client *mdsc, > struct ceph_cap_reservation *ctx); > -- > 1.8.1.2 > N????y????b?????v?????{.n??????z??ay????????j???f????????????????:+v??????????zZ+??????"?!? -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html