From 77165f118a57143cfccf9522678cf0b3d179bfd9 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Fri, 6 Mar 2015 23:27:10 -0600 Subject: [PATCH] Added an Unlink method. --- file_system.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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 { }