[ 
https://issues.apache.org/jira/browse/HDFS-17479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ZanderXu updated HDFS-17479:
----------------------------
        Parent:     (was: HDFS-17366)
    Issue Type: Task  (was: Sub-task)

> [FGL] Solutions for Snapshot
> ----------------------------
>
>                 Key: HDFS-17479
>                 URL: https://issues.apache.org/jira/browse/HDFS-17479
>             Project: Hadoop HDFS
>          Issue Type: Task
>            Reporter: ZanderXu
>            Assignee: ZanderXu
>            Priority: Major
>         Attachments: image-2024-04-18-11-00-02-011.png, 
> image-2024-04-18-11-00-12-451.png
>
>
> Snapshot feature is a very useful feature in certain scenarios. As far as I 
> know, very few companies use this feature in the prod environment. The 
> implementation is complex and it is difficult to support FGL with only minor 
> modifications.
> So we can still use the Global lock to make snapshot-related operations 
> thread-safe.
>  
> Snapshot has some access modules, let's analyze them and find a way to still 
> use GlobalLock.
> !image-2024-04-18-11-00-12-451.png|width=288,height=219!
> The above picture shows a simple case, we can access the iNode foo through 
> the following paths:
>  # /abc/foo
>  # /abc/.snapshot/s1/foo
> If we want to delete the iNode foo, we need to lock /abc and 
> /abc/.snapshot/s1 (DirectoryWithSnapshotFeature on iNode abc).
> If we want to change permission of the iNode foo, we need to lock /abc/foo 
> and /abc/.snapshot/s1/foo (DirectoryWithSnapshotFeature on the iNode foo)
>  
> For this case, we can directly acquire the global lock when resolving the 
> IIPs for the input path if there is an iNode that has 
> DirectorySnapshottableFeature.
> !image-2024-04-18-11-00-02-011.png|width=368,height=383!
> After /abc/foo is renamed to /xyz/bar, the access modules will be changed, as 
> the above picture shows. We can access this bar through the following path:
>  # /abc/.snapshot/s1/bar
>  # /xyz/bar
> For /abc/.snapshot/s1/bar, since the iNode abc has 
> DirectorySnapshottableFeature, so we can identify it and acquire the global 
> lock.
> For /xyz/bar, we can identify it through Reference flag, since the iNode bar 
> is a DstReference Node.
>  
> So we can use DirectorySnapshottableFeature and Reference to determine if we 
> need to acquire the Global lock when resolving the IIPs for input path.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to