Whamcloud - gitweb
Branch HEAD
authorbobijam <bobijam>
Tue, 16 Dec 2008 02:16:18 +0000 (02:16 +0000)
committerbobijam <bobijam>
Tue, 16 Dec 2008 02:16:18 +0000 (02:16 +0000)
b=16417
i=alexey.lyashkov (shadow)
i=johann

Description: Lustre doesn't delete files
Details    : Clients drop lock reference and release openhandle when they find
             stale inode.

lustre/ChangeLog
lustre/llite/dcache.c

index 843e919..f583dc5 100644 (file)
@@ -13,6 +13,13 @@ tbd  Sun Microsystems, Inc.
         removed cwd "./" (refer to Bugzilla 14399).
        * File join has been disabled in this release, refer to Bugzilla 16929.
 
+Severity   : normal
+Frequency  : race on file read and write
+Bugzilla   : 16417
+Description: Lustre doesn't delete files
+Details    : Clients drop lock reference and release openhandle when they find
+             stale inode.
+
 Severity   : minor
 Frequency  : rare
 Bugzilla   : 17802
@@ -26,7 +33,7 @@ Severity   : normal
 Frequency  : rare, need acl's on inode.
 Bugzilla   : 16492
 Description: client can't handle ost additional correctly
-Details    : if ost was added after client connected to mds client can have 
+Details    : if ost was added after client connected to mds client can have
              hit lnet_try_match_md ... to big messages to wide striped files.
              in this case need teach client to handle config events about add
              lov target and update client max ea size at that event.
@@ -70,7 +77,7 @@ Description: Interoperability at server side (Disk interoperability)
 Severity   : enhancement
 Bugzilla   : 17201
 Description: Update to RHEL5 kernel-2.6.18-92.1.17.el5.
+
 Severity   : enhancement
 Bugzilla   : 17458
 Description: Update to SLES10 SP2 kernel-2.6.16.60-0.31.
index bafb293..40be3e6 100644 (file)
@@ -493,7 +493,15 @@ do_lock:
         }
 
         if (rc < 0) {
-                if (rc != -ESTALE) {
+                if (-ESTALE == rc) {
+                        if (it_disposition(it, DISP_OPEN_OPEN) &&
+                            !it_open_error(DISP_OPEN_OPEN, it))
+                                /* server have valid open - close file first*/
+                                ll_release_openhandle(de, it);
+                        /* release intent reference to avoid having stale 'it'
+                         * in namedata for old VFS intent */
+                        ll_intent_drop_lock(it);
+                } else {
                         CDEBUG(D_INFO, "ll_intent_lock: rc %d : it->it_status "
                                "%d\n", rc, it->d.lustre.it_status);
                 }