On Fri, 20 Jan 2006, Jan Koss wrote: > In comparison with this > > bh = sb_bread(sb, oldblock); > > if (!bh) > > goto err; > > bh->b_blocknr = newblk; > > mark_buffer_dirty (bh); > > unmap_underlying_metadata(bh->b_bdev, bh->b_blocknr); > > this code like this didn't cause any "warrnings": > struct buffer_head *newbh; > > bh = sb_bread(sb, oldblock); > newbh = sb_bread(sb, newblock); > if (!(bh || newbh)) > goto err; > > memcpy(newbh->b_data, bh->b_data, sb->s_blocksize); > mark_buffer_dirty(newbh); > brelse(bh); > brelse(newbh); > invalidate_inode_buffers(inode); Yes, that is almost correct. Although it is wrong. (-; You do not want the invalidate_inode_buffers() call. It makes no sense for your fs at all given how you are dealing with the buffers with sb_bread()/brelse()... Your method never attaches buffers to the inode so there is no point in trying to invalidate anything. It will all just work fine. (Unless you have omitted to say things about your fs that are important. Why don't you show all your code rather than just those snippets and then proper advice can be given...) Best regards, Anton -- Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @) Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/ -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/