diff options
author | Jan Harkes <jaharkes@cs.cmu.edu> | 2007-07-19 04:48:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 13:04:48 -0400 |
commit | 87065519633af79e0577e32a58dcd9cf3c45a8a0 (patch) | |
tree | 5c53c073d91523081271b1a83a741e32edf28cf7 /fs/coda/upcall.c | |
parent | ed31a7dd636b296746c131b7386023aa1ef84309 (diff) |
coda: cleanup /dev/cfs open and close handling
- Make sure device index is not a negative number.
- Unlink queued requests when the device is closed to avoid passing them
to the next opener.
Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/coda/upcall.c')
-rw-r--r-- | fs/coda/upcall.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c index 1651b918219a..a44ca4155fd5 100644 --- a/fs/coda/upcall.c +++ b/fs/coda/upcall.c | |||
@@ -641,8 +641,7 @@ int venus_statfs(struct dentry *dentry, struct kstatfs *sfs) | |||
641 | * | 641 | * |
642 | */ | 642 | */ |
643 | 643 | ||
644 | static inline void coda_waitfor_upcall(struct upc_req *vmp, | 644 | static inline void coda_waitfor_upcall(struct upc_req *vmp) |
645 | struct venus_comm *vcommp) | ||
646 | { | 645 | { |
647 | DECLARE_WAITQUEUE(wait, current); | 646 | DECLARE_WAITQUEUE(wait, current); |
648 | 647 | ||
@@ -655,10 +654,6 @@ static inline void coda_waitfor_upcall(struct upc_req *vmp, | |||
655 | else | 654 | else |
656 | set_current_state(TASK_UNINTERRUPTIBLE); | 655 | set_current_state(TASK_UNINTERRUPTIBLE); |
657 | 656 | ||
658 | /* venus died */ | ||
659 | if ( !vcommp->vc_inuse ) | ||
660 | break; | ||
661 | |||
662 | /* got a reply */ | 657 | /* got a reply */ |
663 | if ( vmp->uc_flags & ( REQ_WRITE | REQ_ABORT ) ) | 658 | if ( vmp->uc_flags & ( REQ_WRITE | REQ_ABORT ) ) |
664 | break; | 659 | break; |
@@ -738,7 +733,7 @@ static int coda_upcall(struct coda_sb_info *sbi, | |||
738 | * ENODEV. */ | 733 | * ENODEV. */ |
739 | 734 | ||
740 | /* Go to sleep. Wake up on signals only after the timeout. */ | 735 | /* Go to sleep. Wake up on signals only after the timeout. */ |
741 | coda_waitfor_upcall(req, vcommp); | 736 | coda_waitfor_upcall(req); |
742 | 737 | ||
743 | if (vcommp->vc_inuse) { /* i.e. Venus is still alive */ | 738 | if (vcommp->vc_inuse) { /* i.e. Venus is still alive */ |
744 | /* Op went through, interrupt or not... */ | 739 | /* Op went through, interrupt or not... */ |