On 09/16/2017 02:40 PM, Martin Raiber wrote: > Hi, > > On 16.09.2017 14:27 Hans van Kranenburg wrote: >> On 09/10/2017 01:50 AM, Rohan Kadekodi wrote: >>> I was trying to understand how file renames are handled in Btrfs. I >>> read the code documentation, but had a problem understanding a few >>> things. >>> >>> During a file rename, btrfs_commit_transaction() is called which is >>> because Btrfs has to commit the whole FS before storing the >>> information related to the new renamed file. >> Can you point to which lines of code you're looking at? >> >>> It has to commit the FS >>> because a rename first does an unlink, which is not recorded in the >>> btrfs_rename() transaction and so is not logged in the log tree. Is my >>> understanding correct? [...] >> Can you also point to where exactly you see this happening? I'd also >> like to understand more about this. >> >> The whole mail thread following this message continues about what a >> transaction commit is and does etc, but the above question is never >> answered I think. >> >> And I think it's an interesting question. Is a rename a "heavier" >> operation relative to other file operations? >> > as far as I can see it only uses the log tree in some cases where the > log tree was already used for the file or the parent directory. The > cases are documented here > https://github.com/torvalds/linux/blob/master/fs/btrfs/tree-log.c#L45 . > So rename isn't much heavier than unlink+create.
Ah. I also see that the difficult situations are about moving a file to another directory. So, if I just rename a file in the same directory, that's even simpler. -- Hans van Kranenburg -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html