NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/44086: large writes with PUFFS_KFLAG_NOCACHE_PAGE ends up with EIO



>Number:         44086
>Category:       kern
>Synopsis:       large writes with PUFFS_KFLAG_NOCACHE_PAGE ends up with EIO
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Nov 12 15:40:00 +0000 2010
>Originator:     YAMAMOTO Takashi
>Release:        NetBSD-current
>Organization:
        
>Environment:
        
        
System: NetBSD narn.netbsd.org 4.0_STABLE NetBSD 4.0_STABLE (NBMAIL) #5: Fri 
Jul 3 22:41:25 UTC 2009 root@ADMIN:/usr/obj/sys/arch/i386/compile.i386/NBMAIL 
i386
>Description:
        with PUFFS_KFLAG_NOCACHE_PAGE, puffs_vnop_write fails in its 2nd
        iteration due to the reuse of a park.
>How-To-Repeat:
        1. mount a puffs-based PUFFS_KFLAG_NOCACHE_PAGE filesystem
        2. write a large chunk to it
           eg. dd if=/dev/zero of=/mnt/file bs=1m count=1
>Fix:

Index: puffs_msgif.c
===================================================================
RCS file: /cvsroot/src/sys/fs/puffs/puffs_msgif.c,v
retrieving revision 1.82
diff -u -p -r1.82 puffs_msgif.c
--- puffs_msgif.c       6 Jul 2010 17:00:06 -0000       1.82
+++ puffs_msgif.c       12 Nov 2010 15:31:38 -0000
@@ -332,6 +332,9 @@ puffs_msg_enqueue(struct puffs_mount *pm
        struct puffs_req *preq, *creq;
        ssize_t delta;
 
+       /* some clients reuse a park */
+       park->park_flags &= ~(PARKFLAG_DONE | PARKFLAG_HASERROR);
+
        mp = PMPTOMP(pmp);
        preq = park->park_preq;
 

>Unformatted:
        
        


Home | Main Index | Thread Index | Old Index