Handle unliked files, fixes #87
This commit is contained in:
parent
ff9ea8d5ff
commit
ce9e375352
16
lib/9p.js
16
lib/9p.js
|
@ -171,7 +171,7 @@ Virtio9p.prototype.ReceiveRequest = function (index, GetByte) {
|
|||
//if (inode.status == STATUS_LOADING) return;
|
||||
var ret = this.fs.OpenInode(idx, mode);
|
||||
|
||||
this.fs.AddEvent(this.fids[fid].inodeid,
|
||||
this.fs.AddEvent(this.fids[fid].inodeid,
|
||||
function() {
|
||||
message.Debug("file opened " + inode.name + " tag:"+tag);
|
||||
req[0] = inode.qid;
|
||||
|
@ -312,6 +312,13 @@ Virtio9p.prototype.ReceiveRequest = function (index, GetByte) {
|
|||
var fid = req[0];
|
||||
var inode = this.fs.GetInode(this.fids[fid].inodeid);
|
||||
message.Debug("[getattr]: fid=" + fid + " name=" + inode.name + " request mask=" + req[1]);
|
||||
if(!inode || inode.status === STATUS_UNLINKED)
|
||||
{
|
||||
message.Debug("getattr: unlinked");
|
||||
this.SendError(tag, "No such file or directory", ENOENT);
|
||||
this.SendReply(0, index);
|
||||
break;
|
||||
}
|
||||
req[0] |= 0x1000; // P9_STATS_GEN
|
||||
|
||||
req[0] = req[1]; // request mask
|
||||
|
@ -410,6 +417,13 @@ Virtio9p.prototype.ReceiveRequest = function (index, GetByte) {
|
|||
var inode = this.fs.GetInode(this.fids[fid].inodeid);
|
||||
if (id == 40) message.Debug("[treaddir]: fid=" + fid + " offset=" + offset + " count=" + count);
|
||||
if (id == 116) message.Debug("[read]: fid=" + fid + " (" + inode.name + ") offset=" + offset + " count=" + count + " fidtype=" + this.fids[fid].type);
|
||||
if(!inode || inode.status === STATUS_UNLINKED)
|
||||
{
|
||||
message.Debug("read/treaddir: unlinked");
|
||||
this.SendError(tag, "No such file or directory", ENOENT);
|
||||
this.SendReply(0, index);
|
||||
break;
|
||||
}
|
||||
if (this.fids[fid].type == FID_XATTR) {
|
||||
if (inode.caps.length < offset+count) count = inode.caps.length - offset;
|
||||
for(var i=0; i<count; i++)
|
||||
|
|
Loading…
Reference in a new issue