diff --git a/file_system.go b/file_system.go index 84d90a0..d8fd3ac 100644 --- a/file_system.go +++ b/file_system.go @@ -118,6 +118,15 @@ type FileSystem interface { ctx context.Context, req *RmDirRequest) (*RmDirResponse, error) + // Unlink a file from its parent. If this brings the inode's link count to + // zero, the inode should be deleted once the kernel calls ForgetInode. It + // may still be referenced before then if a user still has the file open. + // + // Sample implementation in ext2: ext2_unlink (http://goo.gl/hY6r6C) + Unlink( + ctx context.Context, + req *UnlinkRequest) (*UnlinkResponse, error) + /////////////////////////////////// // Directory handles /////////////////////////////////// @@ -515,6 +524,18 @@ type RmDirRequest struct { Name string } +type UnlinkResponse struct { +} + +type UnlinkRequest struct { + Header RequestHeader + + // The ID of parent directory inode, and the name of the file being removed + // within it. + Parent InodeID + Name string +} + type RmDirResponse struct { }