From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751349AbdALJgr (ORCPT ); Thu, 12 Jan 2017 04:36:47 -0500 Received: from kafb.nttcom.co.jp ([132.222.121.23]:55266 "EHLO kafb.nttcom.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750899AbdALJgq (ORCPT ); Thu, 12 Jan 2017 04:36:46 -0500 X-Greylist: delayed 1174 seconds by postgrey-1.27 at vger.kernel.org; Thu, 12 Jan 2017 04:36:45 EST To: From: Nakajima Akira Subject: Duplicate inode number when mount --bind some directories to same mountpoint. (from Fedora18 to 4.10-rc3) Message-ID: <9795d554-d236-2096-497d-e25622042d41@nttcom.co.jp> Date: Thu, 12 Jan 2017 18:16:35 +0900 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp"; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Originating-IP: [10.133.1.147] X-TM-AS-MML: disable Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Bug: Duplicate inode number when mount --bind some directories to same mountpoint. (from Fedora18 to 4.10-rc3) Fedora17 and earlier works correctly. And, Above kernel ver 3.6 (Fedora18 including 4.10-rc3) creates many structs of mount than ver 3.3 (Fedora17). Is this a correct specification? Looks kernel creates same many structs of mount. ================================================================ Systemtap script to see kernel creates many structs of mount. [root@fedora17 home]# cat /root/mnt.stp #! /usr/bin/stap probe kernel.function("alloc_vfsmnt").return { printf("%s() new_mnt:%p\n", probefunc(), $return); } probe kernel.function("clone_mnt").return { // do_mount, copy_tree name = @cast($return, "mount")->mnt_mountpoint->d_iname; inode = @cast($return, "mount")->mnt_mountpoint->d_inode; ino = @cast($return, "mount")->mnt_mountpoint->d_inode->i_ino; printf("%s() mnt:%p d_iname:%s inode:%p ino:%u\n", probefunc(), $return, kernel_string(name), inode, ino); } ================================================================ Systemtap script result on Fedora17 Kernel create 1 struct of mount. [root@fedora17 home]# mkdir a b [root@fedora17 home]# ls -i 655540 a 655542 b [root@fedora17 home]# /root/mnt.stp & [root@fedora17 home]# mount --bind a /mnt [root@fedora17 home]# alloc_vfsmnt() new_mnt:0xffff880136bdaf00 clone_mnt() mnt:0xffff880136bdaf00 d_iname:a inode:0xffff88013081cb00 ino:655540 [root@fedora17 home]# mount --bind b /mnt [root@fedora17 home]# alloc_vfsmnt() new_mnt:0xffff8801355b4f00 clone_mnt() mnt:0xffff8801355b4f00 d_iname:b inode:0xffff88013081c790 ino:655542 [root@fedora17 home]# ls -i 655540 a 655542 b ================================================================ Systemtap script result on Fedora25 Kernel create many structs of mount. And, inode number of "a" changes to 547586 of "b". [root@fedora25 home]# mkdir a b [root@fedora25 home]# ls -i 547584 a 547586 b [root@fedora25 home]# /root/mnt.stp & [root@fedora25 home]# mount --bind a /mnt [root@fedora25 home]# clone_mnt() new_mnt:0xffff99e4b7cdc900 do_mount() mnt:0xffff99e4b7cdc900 d_iname:a inode:0xffff99e4b9dcc948 ino:547584 clone_mnt() new_mnt:0xffff99e4b7cdcc00 copy_tree() mnt:0xffff99e4b7cdcc00 d_iname:a inode:0xffff99e4b9dcc948 ino:547584 clone_mnt() new_mnt:0xffff99e4b7cdc000 copy_tree() mnt:0xffff99e4b7cdc000 d_iname:a inode:0xffff99e4b9dcc948 ino:547584 clone_mnt() new_mnt:0xffff99e4b7cdc480 copy_tree() mnt:0xffff99e4b7cdc480 d_iname:a inode:0xffff99e4b9dcc948 ino:547584 clone_mnt() new_mnt:0xffff99e4b7cdc180 copy_tree() mnt:0xffff99e4b7cdc180 d_iname:a inode:0xffff99e4b9dcc948 ino:547584 [root@fedora25 home]# mount --bind b /mnt clone_mnt() new_mnt:0xffff99e4b7cb1480 do_mount() mnt:0xffff99e4b7cb1480 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e4b7cb1180 copy_tree() mnt:0xffff99e4b7cb1180 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e4b7cb1000 copy_tree() mnt:0xffff99e4b7cb1000 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9d80 copy_tree() mnt:0xffff99e436df9d80 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9600 copy_tree() mnt:0xffff99e436df9600 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9780 copy_tree() mnt:0xffff99e436df9780 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9a80 copy_tree() mnt:0xffff99e436df9a80 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9900 copy_tree() mnt:0xffff99e436df9900 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9c00 copy_tree() mnt:0xffff99e436df9c00 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9180 copy_tree() mnt:0xffff99e436df9180 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 clone_mnt() new_mnt:0xffff99e436df9480 copy_tree() mnt:0xffff99e436df9480 d_iname:b inode:0xffff99e4b9dceac8 ino:547586 [root@fedora25 home]# ls -i 547586 a 547586 b ******** Duplicate inode number ******** [root@fedora25 home]# echo ok > /mnt/zzz [root@fedora25 home]# ls /home/* /home/a: zzz /home/b: zzz ******** Actually /home/a/zzz is no exist, but can see ******** ----- Akira Nakajima