]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge branch 'unstable' into nofilltrace
authorSage Weil <sage@newdream.net>
Thu, 2 Apr 2009 17:37:59 +0000 (10:37 -0700)
committerSage Weil <sage@newdream.net>
Thu, 2 Apr 2009 17:37:59 +0000 (10:37 -0700)
Conflicts:

src/TODO
src/kernel/debugfs.c
src/kernel/mds_client.c

1  2 
src/TODO
src/kernel/debugfs.c
src/kernel/dir.c
src/kernel/inode.c
src/kernel/mds_client.c
src/kernel/mds_client.h
src/kernel/super.h

diff --cc src/TODO
index b5c4995868fb1eef4e45dcf21010e63d21ab552f,71c032b0be42c1110d15673b989ade78464fd24f..ab7ee12c5526a3eb6792dd652ba318f12928d5ce
+++ b/src/TODO
@@@ -27,32 -27,11 +27,29 @@@ v0.7.
  /- make kclient timeouts tunable
  
  v0.8
 -- kill fill_trace
 +- revamp client<->mds interaction wrt snapshots...
 +- clean up path_traverse interface, esp the usages in Server.cc
 +- fix up mds selection, and ESTALE handling.  
- - allow mon to log messages
-   - log client mount successes, failures
-   - mon elections
-   - ?
+ - return extra inode(s) in reply (namely, unlink)?
  - store root inode on mds
  - allow chmod/whatever of root inode
 +- piggyback lease/cap release on client_request
  
 +kclient caps
 +/- two session lists: dirty_caps, clean_caps
 +/- time out and release clean caps explicitly
 +/- pin dirty caps
 +/- don't pin clean caps
 +/- release on destroy_inode
 +/- implement write_inode?
 +/- hold a pin_ref for request r_inode or r_locked_dir.
 +/- flush dirty caps to auth mds only.  resend on cap import.
 +- reflush caps on mds recovery, cap migration.
 +/- cap (release) reservations
 +/- size limit on readdir result, partial dirfrag readdir
 +/- revisit unmount
 +/- make request paths relative to a non-snapshotted inode.
 +- fix nfs exportin
  
  - ENOSPC
  - flock
index 97f637e430196945d7c8df35754d2528dc15747a,5f811081131015db20751742409691b363e71683..38c0f1e2a16d1b6edbcd4c09968a0bfed9d0db4e
@@@ -367,19 -367,26 +367,39 @@@ static int osdc_show(struct seq_file *s
        return 0;
  }
  
 +static int caps_reservation_show(struct seq_file *s, void *p)
 +{
 +      int total, used, reserved;
 +
 +      ceph_reservation_status(&total, &used, &reserved);
 +
 +      seq_printf(s, "total\t\t%d\n"
 +                    "used\t\t%d\n"
 +                    "reserved\t%d\n",
 +                    total, used, reserved);
 +      return 0;
 +}
 +
+ static int dentry_lru_show(struct seq_file *s, void *ptr)
+ {
+       struct ceph_client *client = s->private;
+       struct ceph_mds_client *mdsc = &client->mdsc;
+       struct list_head *p;
+       struct ceph_dentry_info *di;
+       spin_lock(&mdsc->dentry_lru_lock);
+       list_for_each(p, &mdsc->dentry_lru) {
+               struct dentry *dentry;
+               di = list_entry(p, struct ceph_dentry_info, lru);
+               dentry = di->dentry;
+               seq_printf(s, "%p %p\t%.*s\n",
+                       di, dentry, dentry->d_name.len, dentry->d_name.name);
+       }
+       spin_unlock(&mdsc->dentry_lru_lock);
+       return 0;
+ }
  #define DEFINE_SHOW_FUNC(name)                                                \
  static int name##_open(struct inode *inode, struct file *file)                \
  {                                                                     \
@@@ -406,7 -413,7 +426,11 @@@ DEFINE_SHOW_FUNC(osdmap_show
  DEFINE_SHOW_FUNC(monc_show)
  DEFINE_SHOW_FUNC(mdsc_show)
  DEFINE_SHOW_FUNC(osdc_show)
++<<<<<<< HEAD:src/kernel/debugfs.c
 +DEFINE_SHOW_FUNC(caps_reservation_show)
++=======
+ DEFINE_SHOW_FUNC(dentry_lru_show)
++>>>>>>> unstable:src/kernel/debugfs.c
  
  #ifdef CONFIG_CEPH_BOOKKEEPER
  static int debugfs_bookkeeper_set(void *data, u64 val)
Simple merge
Simple merge
index fb0b8b72a7f565938c61ad5032e138466193855f,d2623f307190fecb2d83c5c9c665beb06ed71dcf..9b35a50e294e5c8cbc989bd83fd93fb7275ee593
@@@ -2246,10 -2173,8 +2247,12 @@@ void ceph_mdsc_init(struct ceph_mds_cli
        spin_lock_init(&mdsc->cap_delay_lock);
        INIT_LIST_HEAD(&mdsc->snap_flush_list);
        spin_lock_init(&mdsc->snap_flush_lock);
 +      INIT_LIST_HEAD(&mdsc->cap_dirty);
 +      INIT_LIST_HEAD(&mdsc->cap_sync);
 +      spin_lock_init(&mdsc->cap_dirty_lock);
 +      init_waitqueue_head(&mdsc->cap_sync_wq);
+       spin_lock_init(&mdsc->dentry_lru_lock);
+       INIT_LIST_HEAD(&mdsc->dentry_lru);
  }
  
  /*
index c335e2e56371388f7b426951677cb5e4ce8065af,811607e7db5d1115e24aeca324d091d3f12b9902..b3d37d26021a1f994aac0946079155f9c92f06a4
@@@ -245,11 -236,12 +245,15 @@@ struct ceph_mds_client 
        spinlock_t       cap_delay_lock;   /* protects cap_delay_list */
        struct list_head snap_flush_list;  /* cap_snaps ready to flush */
        spinlock_t       snap_flush_lock;
 +      struct list_head cap_dirty, cap_sync; /* inodes with dirty cap data */
 +      spinlock_t       cap_dirty_lock;
 +      wait_queue_head_t cap_sync_wq;
  
        struct dentry           *debugfs_file;
+       spinlock_t              dentry_lru_lock;
+       struct list_head        dentry_lru;
+       int                     num_dentry;
  };
  
  extern const char *ceph_mds_op_name(int op);
Simple merge