  tmpfs-symlink-fix.c ˤĤ            Feb 11 1998  YAMAMORI Takenori

  tmpfs ΥХΤ̤ symlink ΥХˤĤơ
modload ˤ褹뤳ȤǤޤΤǡΥޤ

  ϡʲμǸݤ tmpfs  symlink ΥХ
褹ΤǤ

  (/tmp is mounted as tmpfs)
  $ cd /tmp
  $ mkdir aaa
  $ chmod -w aaa
  $ cd aaa
  $ ln -s bbb ccc    # should be symbolic-link (not hard-link)
panic: kmem_free: block already free


  ʤtmpfs ˤϡ¾ fifo  hardlink ΥХ
ȤΤ⤢ꡢˤĤƤϡSunOS4.1.3 Ѥ public patch Ρ
100507-06 ƤľޤSunOS4.1.4 ѤϤʤޤΤǡ
SunOS4.1.3 Ѥ򤢤Ƥ뤷ޤ


SunOS4.1.4  symlink ΥХϡvn_symlink() ǡ񤭹ԲĤ
ǥ쥯ȥ symlink 褦Ȥȡʤ
Permission denied Ȥʤ٤Ȥkmem  malloc/free 
ʤʤꡢpanic ȤΤǤ

Ǥ vn_symlink()  wrap ơɤƤ뤳Ȥ
ޤ

ΤˡǤΤ褦ˤޤ
vn_mkdir() Ǥϡ񤭹ԲĤΥǥ쥯ȥФƥǥ쥯ȥ
Ȥȡ Permission denied Ȥʤ뤳Ȥ狼äƤޤ
ǡѤvn_symlink() ƤФ줿顢 symlink ̾Ǥޤ
vn_mkdir() ƤӽФơ˥ǥ쥯ȥȤƺƤߤơ
⤷줬񤭹ԲĤǼԤˤϡvn_symlink() ƤФ
Τޤޥ顼ɤäƥ꥿󤷤ޤơǥ쥯ȥ
ϡvn_rmdir() ԤʤäƲΥǥ쥯ȥ
̤̾ vn_symlink() ԤʤȤˡͤޤ

SunOS4.1.4 Ѥ modload ƸѤ
ưݡйǤ

ޤäɤˡ¾ΥɥХޤꤤޤ

Ǥ sun4c ưǧƤޤ

sun4m ξϡѥ #define sun4m նƲ

gcc ǤΥѥθơsun4c  __sun4c__ ξ
#define Ƥޤ

  ${CC} -O2 -c tmpfs-symlink-fix.c
  modload tmpfs-symlink-fix.o

Ȥޤ

Υץˤꡢtmpfs  fifo hardlink ΥХ
뤿 8lgm_tmpfs.c Ȥ̾ΤƤץ
ͤˤޤ

yamamori@kt.rim.or.jp
