From fd52dddcd69462e1cf3ffe1ba1180dff94ad85f5 Mon Sep 17 00:00:00 2001 From: bobijam Date: Tue, 16 Dec 2008 02:16:18 +0000 Subject: [PATCH] Branch HEAD 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 | 11 +++++++++-- lustre/llite/dcache.c | 10 +++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 843e919..f583dc5 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -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. diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index bafb293..40be3e6 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -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); } -- 1.8.3.1