Netfs Ada experimentations

Rev 05c2ac288ad2

  • Nothing is implemented in the Netfs_Implementation package
  • node is the translator inode in directory .

ls -la .

  • Leads to a call of Validate_Stat : line 115 of Netfs_Implementation package
  • Returns an error :
    • bash: cd: node: Not a directory

ls -la node

  • Returns an error :
    • ls: cannot access node: Not a directory
  • Leads also to a call of Validate_Stat : line 115 of Netfs_Implementation package

cd node

  • Returns an error :
    • bash: cd: node: Not a directory
  • Validate_Stat get called three times

Rev 6052185bf877

  • Only a very simple Validate_State is implemented

ls -la .

  • Leads to a call of Validate_Stat : line 120 of Netfs_Implementation package then a call to Check_Open_Permissions : line 13
  • Returns this error :
    • "ls: cannot access node: Not a directory"

ls -la node

  • Returns an error :
    • ls: cannot access node: Not a directory
  • Leads to a call of Validate_Stat : line 120 of Netfs_Implementation package then a call to Check_Open_Permissions : line 13

cd node

  • Returns an error :
    • bash: cd: node: Not a directory
  • Validate_Stat then Check_Open_Permissions sequence is called three times

Rev dd3e6b7ea5c7

  • Check_Open_Permissions implemented

ls -la .

  • No more error : node is displayed as a directory
  • Sequence call : validate_state / check_open_permissions / validate_state

ls -la node

  • Returns an error :
    • ls: reading directory node: Operation not supported
  • Call sequence :
    • validate_state
    • check_open_permissions
    • validate_state
    • validate_state
    • check_open_permissions
    • validate_state
    • get_dirents line 90 of netfs_implementation package

cd node

  • Hangs
  • Call sequence :
    • Validate_Stat
    • Check_Open_Permissions
    • Validate_Stat
    • Validate_Stat
    • Check_Open_Permissions
    • netfs_implementation.adb:57 Netfs_Implementation.Attempt_Lookup

Rev 68f905dc9b7c

  • Attemp_Lookup implemented

ls -la .

  • No more error : node is displayed as a directory
  • Sequence call : validate_state / check_open_permissions / validate_state

ls -la node

  • Returns an error :
    • ls: reading directory node: Operation not supported
    • get_dirents still not implemented
  • Call sequence :
    • validate_state
    • check_open_permissions
    • validate_state
    • validate_state
    • check_open_permissions
    • validate_state
    • get_dirents line 90 of netfs_implementation package

cd node

  • No more hang
  • Call sequence :
    • Validate_Stat
    • check_open_permissions
    • Validate_Stat
    • Validate_Stat
    • check_open_permissions
    • attemp_lookup
    • Validate_Stat
    • check_open_permissions
    • attemp_lookup
    • Validate_Stat
    • Validate_Stat
    • check_open_permissions
    • Validate_Stat
    • Not Implemented Netfs_Implementation.Get_Dirents
    • attemp_lookup
    • Validate_Stat
    • Validate_Stat
    • check_open_permissions
    • Validate_Stat
    • Not Implemented Netfs_Implementation.Get_Dirents
    • attemp_lookup
    • Validate_Stat
    • Validate_Stat
    • check_open_permissions
    • Validate_Stat
    • Not Implemented Netfs_Implementation.Get_Dirents
    • attemp_lookup
    • Validate_Stat
    • Validate_Stat
    • check_open_permissions
    • Validate_Stat
    • Not Implemented Netfs_Implementation.Get_Dirents

Rev 98c74b2027c9

  • Get_Dirents implemented
    • Tested with depth option set to two (only regular files in node)

ls -la .

  • OK

ls -la node

  • OK, display leafs regular files
  • Call Sequence
    • Validate_Stat
    • Check_Open_Permissions
    • Validate_Stat
    • Validate_Stat
    • Check_Open_Permissions
    • Validate_Stat
    • enter get dirents netfs_implementation.adb:141 Netfs_Implementation.Get_Dirents
      • then attemp_lookup for each leaf

cd node

  • OK
    • ls in node directory display leafs

Rev 2270e1726850

  • depth parameter goes from 2 to 3

ls node then ls node/path\ 2

  • OK
    • display leafs in directory path 2

ls node/path\ 2

  • OK
    • needed to fix a missing update in the child node (because update was done only on get_dirents call)

cat node/path\ 2/leaf\ 1

  • NOK
    • Call sequence
      • Validate_Stat
      • Check_Open_Permissions
      • Attempt_Lookup
      • Validate_Stat
      • Attempt_Lookup
      • Validate_Stat
      • Check_Open_Permissions
      • Validate_Stat
      • netfs_implementation.adb:113 Netfs_Implementation.Attempt_Read
    • need for attemp_read implementation

Rev 3126bd9ce609

  • Read is implemented
  • next step : write

echo "elle souffle" > node/path\ 2/leaf\ 1

  • NOK
    • command result - bash: node/path 2/leaf 1: Permission denied
    • Call sequence
      • Validate_Stat
      • Check_Open_Permissions
      • Attempt_Lookup path 2 * Validate_Stat
      • Attempt_Lookup leaf 1 * Validate_Stat
      • Validate_Stat
      • Check_Open_Permissions - Check failed WRITE 1073741837

Rev 242f59899045

  • node are created with 0755 permission

echo "elle souffle" > node/path\ 2/leaf\ 1

  • NOK
    • command result - bash: node/path 2/leaf 1: Operation not supported
    • Call sequence
      • Validate_Stat
      • Check_Open_Permissions
      • Attempt_Lookup path 2 * Validate_Stat
      • Attempt_Lookup leaf 1 * Validate_Stat
      • Validate_Stat
      • Check_Open_Permissions
      • netfs_implementation.adb:366 Netfs_Implementation.Attempt_Set_Size : not yet implemented

Rev dceb291aaf1c

  • Set_Size minimal implementation

echo "elle souffle" > node/path\ 2/leaf\ 1

  • NOK
    • command result - bash: node/path 2/leaf 1: Operation not supported
    • Call sequence
      • Validate_Stat
      • Check_Open_Permissions
      • Attempt_Lookup path 2 * Validate_Stat
      • Attempt_Lookup leaf 1 * Validate_Stat
      • Validate_Stat
      • Check_Open_Permissions
      • Attempt_Set_Size
      • netfs_implementation.adb:481 Netfs_Implementation.Attemp_Write

Rev 93311515a6c2

  • Attempt_Write is implemented

echo "elle souffle" > node/path\ 2/leaf\ 1

  • OK

Rev 8395215263d3

  • Test of mkdir

mkdir node/toto

  • NOK
    • command result - mkdir: cannot create directory ‘node/toto’: Operation not supported
  • Call sequence
    • Validate_Stat
    • Check_Open_Permissions
    • netfs_implementation.adb:421 Netfs_Implementation.Attempt_Mkdir

Rev 3425f5c837fb

  • mkdir implementation

mkdir node/toto

  • OK
  • need to create leaf now : write to an inexistent file

echo "elle souffle" > node/test

  • NOK
    • command result - bash: node/test: Not a directory
  • CAll sequence
    • Validate_Stat
    • Check_Open_Permissions
    • Attempt_Lookup
    • Attempt_Create_File

Rev a1f5464f0e53

  • Attempt_Create_File is implemented

echo "elle souffle" > node/test

  • OK