热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

写文件系统时,内核在写操作的时候无法进行读操作

在内核写代码毕竟和在用户层写代码不太一样,毕竟内核各种机制很复杂。今天便遇到了一个问题,本来想在进行写操作的时候,先判断本地文件中的内容,然后根据内容判断本文件是否是远端文件,类

在内核写代码毕竟和在用户层写代码不太一样,毕竟内核各种机制很复杂。


今天便遇到了一个问题,本来想在进行写操作的时候,先判断本地文件中的内容,然后根据内容判断本文件是否是远端文件,类似于软连接的形式,只是比那个更加复杂,应用于在内核中写的一个分布式文件系统。


我需要获取一个量:

isize = wjfs_i_size_read(tmp_dentry->d_inode);    //对应inode中的信息数量+1 

这样就可以判断这个inode中有没有信息了,但是问题就出在这儿了

在写操作中,wjfs_write() 函数下调用这个函数,得到的isize总是0,但是在通过我设计的,软连接触发函数进行读取的时候,简单就是不在写操作中,在读操作或者其他不是写的操作中进行这一步,得到的都是正常值,10, 23 。。。根据实际情况而定。


通过进一步的测试,发现在写操作中,连inode对应存放数据的page都得不到了


感觉具体原因应该是在写操作中,是不能读取关于inode的任何信息的。


又是一天中午,昨天晚上遇到这个问题之后总是想不明白,今天也没有心情继续做别的内容,总想着一定要搞明白,然后,我在两个地方分别加了很多输出,来看看里面到底发生了什么鬼


插入输出后就进行测试了,结果如下:


我的天,同样的inode,拿到的变量的值就是这么不一样,多次测试与顺序无关,我想,是不是本来inode->i_size的值就是不同的,然后我就到两个地方分别进行了直接的inode的isize值输出测试,代码如下:



输出的结果是:



一个是14,一个是 0,彻底无语了,等着天使降临来救我。

后续探索,搞明白了再加!



推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Linux 基础命令详解
    本文介绍了在 Linux 系统中常见的命令及其用法。当用户登录系统后,默认提示符会显示为 [root@localhost ~]# 或 [user@localhost ~]$,其中 # 表示当前用户为 root,$ 表示普通用户。我们将深入探讨一些常用的 Linux 命令,帮助初学者更好地理解和使用这些工具。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
author-avatar
mobiledu2502890777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有