Konstantin Belousov wrote: [stuff snipped] >I wrote: >> >> I can add printf()s anywhere you suggest, but I'm not sure how you would >> catch >> this case sooner? (For example, I could print out di_extsize at the >> beginning of >> ffs_truncate(), if that would help?) >May be, add a loop at the beginning of ffs_truncate(), over all buffers >on both clean and dirty queues, calculating number of buffers with >b_lblkno < 0 and >= -UFS_NXADDR. Print some diagnostic if such buffer is >detected but di_extsize is zero. Ok, I can do that. These failures don't occur that often, so it might take a while to get one.
>BTW, does NFS server use extended attributes ? What for ? Can you, please, >point out the code which does this ? For the pNFS service, there are two system namespace extended attributes for each file stored on the service. pnfsd.dsfile - Stores where the data for the file is. Can be displayed by the pnfsdsfile(8) command. pnfsd.dsattr - Cached attributes that change when a file is written (size, mtime, change) so that the MDS doesn't have to do a Getattr on the data server for every client Getattr. The code is in sys/fs/nfsserver/nfs_nfsdport.c and sys/fs/nfsserver/nfs_nfsdserv.c. Just grep for vn_extattr to see the code. I did notice that my code locks the vnode first and then calls vn_start_write() for the vn_extattr_set() calls, whereas the syscall code locks the vnode after the vn_start_write() call. Does that matter? Thanks, rick _______________________________________________ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"